Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 从example.com/forum重定向到example.ir/forum_.htaccess_Redirect_Mod Rewrite_Forum - Fatal编程技术网

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

.htaccess 从example.com/forum重定向到example.ir/forum,.htaccess,redirect,mod-rewrite,forum,.htaccess,Redirect,Mod Rewrite,Forum,我将从 www.example.com/forum或example.com/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$ Rewrite

我将从

www.example.com/forum
example.com/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
(不带斜杠/),这是死链接。

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

假设
example.com
example.ir
指向同一个位置,然后在.htaccess文件中尝试以下操作:

RewriteEngine On    
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^forum(.*) http://www.example.ir/forum$1 [R=302,L]
上述规则的处理如下:

  • 请求的URL路径(减去目录前缀)是否匹配
    重写规则
    模式
    ^forum(.*)
    ?如果是,那么继续
  • HTTP\u HOST
    服务器变量是否与CondPattern匹配。例如,
    主机
    标题是
    www.example.com
    还是
    example.com
    ?如果是,那么继续
  • 将请求重定向到
    http://www.example.ir/forum$1
    -这是
    重写规则
    替换
    $1
    指的是
    重写规则
    模式中捕获的组(第一个括号中的子模式)-即任何与
    (.*)
    匹配的组
  • 如果
    example.com
    example.ir
    指向不同的服务器,则不需要
    RewriteCond
    指令

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


    HTTP\u HOST
    变量只包含HTTP
    HOST
    头。例如,
    example.com
    。它不包含路径信息。使用重写规则模式匹配URL路径。

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

    假设
    example.com
    example.ir
    指向同一个位置,然后在.htaccess文件中尝试以下操作:

    RewriteEngine On    
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
    RewriteRule ^forum(.*) http://www.example.ir/forum$1 [R=302,L]
    
    上述规则的处理如下:

  • 请求的URL路径(减去目录前缀)是否匹配
    重写规则
    模式
    ^forum(.*)
    ?如果是,那么继续
  • HTTP\u HOST
    服务器变量是否与CondPattern匹配。例如,
    主机
    标题是
    www.example.com
    还是
    example.com
    ?如果是,那么继续
  • 将请求重定向到
    http://www.example.ir/forum$1
    -这是
    重写规则
    替换
    $1
    指的是
    重写规则
    模式中捕获的组(第一个括号中的子模式)-即任何与
    (.*)
    匹配的组
  • 如果
    example.com
    example.ir
    指向不同的服务器,则不需要
    RewriteCond
    指令

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


    HTTP\u HOST
    变量只包含HTTP
    HOST
    头。例如,
    example.com
    。它不包含路径信息。使用
    RewriteRule
    模式匹配URL路径。

    Wow,它工作起来很有魅力,非常感谢,顺便问一下,我如何学习mod rewrite的逻辑?要了解您提供了什么?大量的尝试&错误、测试和质疑一切!:)在许多领域,这些指南可能过于简洁,几乎没有例子,但是,它们是一个非常宝贵的参考。复杂的重写通常涉及复杂的正则表达式,Apache文档根本没有涉及到这一点。是我的正则表达式的转到资源。是一个很好的资源,有大量的代码片段和原始示例,但解释很少。我会给我的答案添加更多的解释…哇,它就像一个魅力,非常感谢你顺便说一句,我如何才能学习修改重写的逻辑?要了解您提供了什么?大量的尝试&错误、测试和质疑一切!:)在许多领域,这些指南可能过于简洁,几乎没有例子,但是,它们是一个非常宝贵的参考。复杂的重写通常涉及复杂的正则表达式,Apache文档根本没有涉及到这一点。是我的正则表达式的转到资源。是一个很好的资源,有大量的代码片段和原始示例,但解释很少。我会给我的答案加上更多的解释。。。