使用 .htaccess 将 URL 重定向到子域
Posted
技术标签:
【中文标题】使用 .htaccess 将 URL 重定向到子域【英文标题】:Using .htaccess to redirect URL to subdomain 【发布时间】:2015-12-16 22:43:36 【问题描述】:我正在主持一个论坛,最近决定将其移至子域。
因此,我将所有论坛文件移至var/www/forum
,我可以通过此目录访问论坛,即example.net/forum
。
我还在我的 apache 虚拟主机中设置了子域,这样如果我转到 forum.example.net
,它将向我显示论坛,这也可以正常工作。
我现在需要做的就是设置一个 .htaccess 以使用目录 URL example.net/forum
将人们重定向到 forum.example.net
。
This answer 让我接近,但不是很接近,因为它会不断地重定向我。
理想情况下,我也想保留他们的请求,例如 example.net/forum/viewtopic.php?example
被重定向到 forum.example.net/viewtopic.php?example
。
在我寻找答案的过程中,mod-rewrite 可能会起作用,但我不太确定如何实现它。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:在/forum/.htaccess
中,您可以将此规则用作您的第一条规则:
RewriteEngine On
RewriteCond %HTTP_HOST ^(?:www\.)?(example\.net)$ [NC]
RewriteRule ^(.*)$ http://forum.%1/$1 [R=301,L,NE]
【讨论】:
这对我不起作用。这是我的.htaccess
文件中的唯一规则,该文件位于/var/www/forum/
中。我已经完成了硬刷新,但如果我去 example.net/forum/viewtopic.php?f=2&t=436 它不会重定向我。【参考方案2】:
RewriteEngine On
RewriteCond "%HTTP_HOST" "^www.example.net$" [OR]
RewriteCond "%HTTP_HOST" "^example.net$"
RewriteRule ^/?forum/(.*)$ http://forum.example.net/$1 [R=301]
【讨论】:
这对我不起作用。即,自从我添加它以来,什么都没有改变。我假设我添加到的 .htaccess 文件是论坛目录中的文件是正确的?以上是关于使用 .htaccess 将 URL 重定向到子域的主要内容,如果未能解决你的问题,请参考以下文章