【问题标题】:Rewrite URL for ANY subdomain with www to corresponding subdomain without www将带有 www 的任何子域的 URL 重写为不带 www 的相应子域
【发布时间】:2011-11-25 19:07:35
【问题描述】:

我们有一个多子域站点,可根据子域文本生成动态内容。但是,如果将 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...

为什么不重写主机?

【问题讨论】:

  • 也许我不必对 RewriteRule 点进行转义?
  • 试试 RewriteRule ^(.*)$ http://%1\.domain\.com/$1 [R=301,L]
  • 投票迁移到 webmasters.stackexchange.com。即使这里的人知道答案,问答也可能在更切题的地方更有价值。
  • 不介意将其转移给网站管理员。不知道怎么弄。
  • @Krister:是的,使用 http:// 确实有帮助,但我猜我的 RegEx 仍然有问题。

标签: regex mod-rewrite apache2 subdomain


【解决方案1】:

试试这个:

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 documentation 以获得解释)。

【讨论】:

  • 感谢您的回复。我没有看到对应用 QSA 有任何影响,并且不确定 L 在这里是否有意义,因为这将用于具有自己重定向的 drupal 安装。
  • 您也应该在回答中明确这一点:它是 Drupal :)。是的,“LAST”是有道理的,因为当我使用这样的重定向时,它总是一个真正的重定向,我总是希望它被直接重定向,而不做任何进一步的事情(=你可能不想处理 URL,只要它以www 开头,对吗?)。
  • 您好,感谢您的帮助。你可能是对的,我对重定向了解不多,我不确定 drupal 是否非常依赖它们。关于www,我只想处理具有额外www级别的子域。
【解决方案2】:

确实有效。

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]

我的浏览器缓存有问题。

【讨论】:

  • 该死的。这就是为什么我每天都告诉我的同事所有在隐身模式下使用 Chrome:添加这些选项:--start-maximized --incognito确定当你退出 Chrome 时,一切正常忘记了包括 DNS,对于拥有自己的 DNS“缓存”(即使在私有模式下)的 Firefox 而言,情况并非如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 2014-03-04
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多