繁体   English   中英

将具有www的任何子域的URL重写为没有www的相应子域

[英]Rewrite URL for ANY subdomain with www to corresponding subdomain without 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 ...

为什么不重写主机?

尝试这个:

RewriteCond %{HTTP_HOST} ^www\.([a-zA-Z-_]+)\.domain\.com [NC]
RewriteRule ^(.*)$ http://%1\.domain\.com/$1 [R=301,NC,QSA,L]

您可能忘记了QSAL指令(在Apache mod_rewrite文档中搜索以获取说明)。

确实有效。

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]

我的浏览器缓存出现问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM