将任何带 www 子域的 URL 重写为不带 www 的相应子域
我们有一个多子域站点,它根据子域文本生成动态内容。但是,如果将 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...
为什么不重写主机?
We have a multi-subdomain site that generates dynamic cotent depending on the subdomain text. However it does not work if www is appended to the subdomain. As some users are used to add www in front of every URL, we would like to fix it with a URL rewrite.
EDIT
I have got this far:
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]
Surprisingly. It works well in one of my test subdomains, but not in the other:
www.otro-mas.subdominio.dev gets redirected to otro-mas.subdomino.dev (with and without an URI like /index.html). Just as expected.
However www.ono.subdominio.dev is going into an infinite redirect. Like this:
http://www.ono.subdominio.dev/ono.subdominio.dev//ono.subdominio.dev//ono...
Why is it not rewriting the host?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
您可能忘记了
QSA
和L
指令(在 Apache mod_rewrite 文档 进行解释)。Try this:
You probably forgot the
QSA
and theL
directives (search on the Apache mod_rewrite documentation for the explanation).它确实有效。
我的浏览器缓存出现一些问题。
It does work.
I had some problem with the caches in my browser.