我遇到了一个问题,即我的子域通过htaccess重写规则错误地将www
附加到了它们。
我的文件夹结构如下:
/public_html/index.html
(维护页面,以防万一)/public_html/.htaccess
/public_html/websitename
/public_html/subdomain
/public_html/testsite
/public_html/clone
位于我的/public_html/
中的我的.htaccess
如下所示
# Force HTTPS & WWW
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} websitename.com$ [NC]
RewriteRule ^(.*)$ /websitename/$1 [L]
RewriteEngine On
RewriteCond %{HTTP_HOST} subdomain.website.com$ [NC]
RewriteRule ^(.*)$ /subdomain/$1 [L]
</IfModule>
这对于websitename.com
来说是完美的,它会强制将URL重写为https://www.websitename.com
但是,它使我的子域在应为https://www.subdomain.websitename.com
的情况下被错误地重写为https://subdomain.websitename.com
我不想强制将HTTPS和WWW强制放在各个网站文件夹中……,我正在寻找一种解决方案,以免除subdomain
根据重写规则。
我尝试添加以下条件,但没有帮助:
RewriteCond %{HTTP_HOST} subdomain.websitename.com$ [NC]
任何人都知道该如何解决这个问题?
答案 0 :(得分:0)
删除:
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
并添加:
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
对于多个域,您可以使用:
RewriteCond %{HTTP_HOST} ^([^.]+)\.([a-z]{2,4})$ [NC]
RewriteRule ^ https://www.%1.%2%{REQUEST_URI} [R=301,L]