如何将域重定向到子域?

时间:2017-08-25 16:30:16

标签: regex .htaccess redirect

我正在尝试将http://www.gelda.com/web_pages/food_index.html重定向到http://food.gelda.com/

我尝试了以下内容:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
Redirect 301 /web_pages/ http://food.gelda.com/
</IfModule>

这不起作用,重定向到http://food.gelda.com/food_index.html

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^gelda.com/web_pages/food_index.html$  [OR]
RewriteCond %{HTTP_HOST} ^www.gelda.com/web_pages/food_index.html$
RewriteRule ^(.*)$ http://food.gelda.com/ [R=301,L]
</IfModule>

这也重定向到http://food.gelda.com/food_index.html

我不知道如何在我的.htaccess文件中执行此操作。我需要/web_pages/中的任何内容转到food.gelda.com

1 个答案:

答案 0 :(得分:0)

基于重写模块的两种选择:

您可以在主机文档根文件夹中使用http服务器主机配置(首选)或动态配置文件(因此并行/web_pages文件夹):

RewriteEngine on
RewriteCond %{HTTP_HOST} ^gelda\.com$  [OR]
RewriteCond %{HTTP_HOST} ^www\.gelda\.com$
RewriteRule ^/?web_pages/ http://food.gelda.com/ [R=301]

或者您在主机/web_pages文件夹中使用动态配置文件:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^gelda\.com$  [OR]
RewriteCond %{HTTP_HOST} ^www\.gelda\.com$
RewriteRule ^ http://food.gelda.com/ [R=301]

在所有情况下,显然需要加载和激活重写模块。如果您决定使用动态配置文件(.htaccess样式文件),则需要使用http服务器主机配置中的AllowOverride指令启用它的解释。显然,该文件也需要服务器进程可读。

一般提示:您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。只有在您无法控制主机配置(读取:非常便宜的托管服务提供商)或者您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下,它们才被支持作为最后一个选项。 )。