使用htaccess

时间:2017-01-04 12:10:14

标签: .htaccess redirect mod-rewrite iis

我有子域名和主域名。我想将子域的所有url重定向到他们的域。比如用户会写

1) abc.example.com   then it should redirect to www.example.com
2) abc.example.com/mno/jkl_123.html then it should redirect to www.example.com/mno/jkl_123.html

<IfModule mod_rewrite.c>
  RewriteCond %{HTTP_HOST} ^abc.example\.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www\.abc.example\.com$
  RewriteRule (.*)$ http://www.example.com/$1 [R=301,L]
</IfModule>

与网站的其他网址相同。我在htaccess中尝试过遵循规则。

它适用于上面定义的图像或点1类型的URL。但不适用于Point 2.

任何人都可以让我知道我需要改变什么才能让它发挥作用。

1 个答案:

答案 0 :(得分:1)

我做了一些小修改:

<IfModule mod_rewrite.c>
  RewriteCond %{HTTP_HOST} ^abc\.example\.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www\.abc\.example\.com$
  RewriteRule ^/?(.*)$ http://www.example.com/$1 [R=301,L,QSA]
</IfModule>

如果您将.htaccess样式文件放在正确的位置,并且在您的http主机配置中根本启用了它的解释,那么这应该可行。

此外,您需要定义主机abc.example.comwww.abc.example.com并指向文件系统中的该位置,它们必须由内部的默认主机提供服务你的http服务器。

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