使用 .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 重定向到子域的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 使用哈希重定向到子域 url

htaccess中的子域重定向[关闭]

.htaccess 如何仅将子域/文件夹重定向到子域

.htaccess - 将子域重定向到文件夹

使用 .htaccess 将 php url 重定向到另一个

使用 htaccess 重定向子域而不更改地址栏中的 URL