我们有一个多子域网站,根据子域文本生成动态强制。但是,如果将www附加到子域,则它不起作用。由于一些用户习惯在每个URL前添加www,我们希望通过URL重写来修复它。
修改
我到目前为止:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.subdominio\.dev [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{http_host} ^www\.([^\.]+)\.subdominio\.dev [NC]
RewriteRule ^(.*) http://%1.subdominio.dev$1 [R=301,QSA,NC]
令人惊讶的。它适用于我的一个测试子域,但不适用于另一个:
www.otro-mas.subdominio.dev被重定向到otro-mas.subdomino.dev(有和没有像/index.html这样的URI)。正如预期的那样。
然而,www.ono.subdominio.dev正在进行无限重定向。像这样:
http://www.ono.subdominio.dev/ono.subdominio.dev//ono.subdominio.dev//ono ...
为什么不重写主机?
答案 0 :(得分:0)
试试这个:
RewriteCond %{HTTP_HOST} ^www\.([a-zA-Z-_]+)\.domain\.com [NC]
RewriteRule ^(.*)$ http://%1\.domain\.com/$1 [R=301,NC,QSA,L]
您可能忘记了QSA
和L
指令(请在Apache mod_rewrite documentation上搜索解释)。
答案 1 :(得分:0)
确实有效。
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.subdominio\.dev [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{http_host} ^www\.([^\.]+)\.subdominio\.dev [NC]
RewriteRule ^(.*) http://%1.subdominio.dev$1 [R=301,QSA,NC]
我的浏览器中的缓存存在问题。