【问题标题】:.htaccess always redirect non-www to www except subdomains?.htaccess 总是将非 www 重定向到 www,子域除外?
【发布时间】:2015-11-06 19:48:41
【问题描述】:

我在发布之前进行了搜索,但找不到适合我需要的主题。我的网站是https only,我希望始终将https://domain.com 的任何请求重定向到https://www.domain.com .. 除非有人访问https://username.domain.com,然后我需要将其重定向到https://www.domain.com/user?username=...

现在我是这样的:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^.* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(.*?)\.(www\.)?domain\.com$ [NC]
RewriteRule ^.*$ https://www.domain.com/user?username=%1 [L,QSA]

但它不适用于非 www 重定向到 www。我需要更改哪些部分以及如何更改?

我检查了另一个答案,但添加 /user 后它就不起作用?规则...

【问题讨论】:

  • 是的,我知道。除了最后一条规则。这就是为什么我无法让它工作。如果我添加最后一条规则,它就会陷入无限循环。但是,如果我不添加它,它会起作用。

标签: apache .htaccess mod-rewrite


【解决方案1】:

你可以有这样的规则:

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
RewriteRule ^ https://www.domain.com/user?username=%1 [L,QSA,R=302]

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多