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

redirect from example.com/forum to example.ir/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 [R=301,L] 

我做不到,我总是得到:

www.example.irforum(没有斜线 /)已死 link.

您发布的代码不可能重定向到 www.example.irforum(没有斜线)。事实上,您发布的代码不会执行任何操作(因为 条件 的 none 将匹配)。如果您看到重定向,则它可能是以前缓存的(错误的)重定向。

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

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

以上规则处理如下:

  1. 请求的URL-path(减去目录前缀)是否匹配RewriteRule模式^forum(.*)?如果是,那么继续...
  2. HTTP_HOST 服务器变量是否匹配 CondPattern。 IE。 Host header 是 www.example.com 还是 example.com?如果是,那么继续...
  3. 将请求重定向到 http://www.example.ir/forum - 这是 RewriteRule 替换 </code> 指的是 <code>RewriteRule 模式 中的捕获组(第一个带括号的子模式) - 即。任何匹配 (.*).

如果 example.comexample.ir 指向不同的服务器,那么您不需要 RewriteCond 指令。

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

HTTP_HOST 变量仅包含 HTTP Host header。例如。 example.com。这不包含路径信息。使用 RewriteRule 模式 来匹配 URL-path.