从example.com/forum重定向到example.ir/forum

时间:2016-05-10 16:56:40

标签: .htaccess redirect mod-rewrite forum

我要从

重定向

www.example.com/forumexample.com/forum

www.example.ir/forum

使用htaccess

RewriteEngine On    
RewriteCond %{HTTP_HOST} ^example.ir/forum$ [OR]        
RewriteCond %{HTTP_HOST} ^example.com/forum$ [OR]    
RewriteCond %{HTTP_HOST} ^www.example.com/forum$     
RewriteRule (.*) http://www.example.ir/forum$1 [R=301,L] 

我做不到,我总是得到:

www.example.irforum(没有斜线/)是死链接。

1 个答案:

答案 0 :(得分:0)

您发布的代码无法重定向到www.example.irforum(没有斜线)。事实上,您发布的代码不会做任何事情(因为条件都不会匹配)。如果您看到重定向,那么它可能是以前缓存(错误)的重定向。

假设example.comexample.ir指向同一个地方,请在.htaccess文件中尝试以下操作:

RewriteEngine On    
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^forum(.*) http://www.example.ir/forum$1 [R=302,L]

以上规则处理如下:

  1. 请求的URL路径(减去目录前缀)是否与RewriteRule 模式 ^forum(.*)匹配?如果是,那么继续......
  2. HTTP_HOST服务器变量是否与 CondPattern 匹配。即。 Host标题是www.example.com还是example.com?如果是,那么继续......
  3. 将请求重定向到http://www.example.ir/forum$1 - 这是RewriteRule 替换$1指的是RewriteRule 模式中捕获的组(第一个带括号的子模式) - 即。无论匹配(.*)
  4. 如果example.comexample.ir指向不同的服务器,那么您就不需要RewriteCond指令。

    使用302(临时)重定向进行测试,直到您确定它正常工作然后更改为301(永久)。或者,禁用浏览器缓存进行测试。

    HTTP_HOST变量仅包含HTTP Host标头。例如。 example.com。这不包含路径信息。使用RewriteRule 模式匹配网址路径。