【问题标题】:rewrite url to non www multiple sites将 url 重写为非 www 多个站点
【发布时间】:2012-02-01 14:16:13
【问题描述】:

我有一些网站使用相同的文件但不同的模板运行,我的目标是强制使用所有 www 或非 www 域。

这是我的代码:

RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteCond %{HTTP:Host} ^[^.]+\.[a-z]{2,5}$ [NC]
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L]

从 stackoverflow 上的其他问题中获取 :)

但是如果我使用 www 域一切正常,如果没有得到这个重定向

http://domain.de/www/htdocs/user/_production/http%28?s%29://www.

【问题讨论】:

    标签: regex .htaccess mod-rewrite


    【解决方案1】:

    为什么不像这样简化你的规则:

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    RewriteCond %{HTTPS} =on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 获取服务器错误...不清楚这是什么问题阻止了 RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !^www\。 [NC] RewriteRule ^ %{HTTP_HOST} %{REQUEST_URI} [R=301,L] RewriteCond %{HTTPS} =on RewriteCond %{HTTP_HOST} !^www\。 [NC] RewriteRule ^ %{HTTP_HOST} %{REQUEST_URI} [R=301,L]
    • 其实我的错,%{REQUEST_URI}前面有个空格。我编辑了,请再试一次。
    • 太好了,谢谢,如何排除一些要重定向的子域?像 admin.domain.com
    • 不客气。您可以像这样添加 RewriteCond 行:RewriteCond %{HTTP_HOST} !^admin\.domain\.com$ [NC] 以避免重定向 admin.domain.com
    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2014-11-26
    • 2014-12-16
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多