Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Apache 如何在htaccess中添加几个自定义异常,并将url-s的其余部分重定向到另一个url?_Apache_.htaccess_Redirect_Mod Rewrite - Fatal编程技术网

Apache 如何在htaccess中添加几个自定义异常,并将url-s的其余部分重定向到另一个url?

Apache 如何在htaccess中添加几个自定义异常,并将url-s的其余部分重定向到另一个url?,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,有两个网站,old.com和new.com。在old.com的.htaccess中,我有一些自定义URL,它们应该被重定向,如: *一,。example.html->new/something/ 示例2->新建/标准配置 示例3->new/other.html /管理员不应该重定向到任何地方* old.com url的所有剩余部分应重定向到new.com(索引)。 到目前为止,我已经通过redirect 301/http://new.com/。 我尝试添加异常,比如编写Redirect 301

有两个网站,old.comnew.com。在old.com的.htaccess中,我有一些自定义URL,它们应该被重定向,如:

*一,。example.html->new/something/

  • 示例2->新建/标准配置

  • 示例3->new/other.html

  • /管理员不应该重定向到任何地方*

  • old.com url的所有剩余部分应重定向到new.com(索引)。 到目前为止,我已经通过
    redirect 301/http://new.com/
    。 我尝试添加异常,比如编写
    Redirect 301 something.htmlhttp://new.com/whatever
    ,但它只是重定向到new.com(index)。 此外,我还尝试了
    RewriteCond%{REQUEST\u URI}
    ,但它看起来像是
    Redirect 301/http://new.com/
    覆盖所有内容。如何成功应用自定义异常?我只有5个

    即使我只是尝试
    RewriteCond%{REQUEST\u URI}^/管理
    
    重写规则(.*)http://www.new.com/$1[R=301,L]
    ,然后我导航到old.com/admin,它重定向到new.com的索引。

    不要将重定向与重写规则混合使用,它们是两个不同的模块

    您可以使用以下选项:

    RewriteEngine on
    
    #example.html => http://newsite.com/new/something
    
    RewriteRule ^example.html$ http://nesite.com/new/something/ [L,R]
    #example2.html => http://newsite.com/new/another.html
    RewriteRule ^example2.html$ http://newsite.com/new/another.html [L,R]
    #redirect everything except /admin
    RewriteRule !^admin http://newsite.com/ [L,R]
    

    关于添加异常的方法,答案的第一部分已经给出。在其他情况下,这可能是一个完整的答案,但在Magento的情况下,最终条件“除admin之外的所有其他内容都应重定向到new.com”如下所示:

    ##重写规则^/管理https://www.new.com/ [L,R=301]
    重写cond%{REQUEST_URI}^/管理员(/|$)
    重写规则^([\w/]*)$http://www.new.com [L]
    

    第一个注释条件仅适用于精确的“admin”,但在Magento中,admin可能会被预加或附加,而不会在导航栏中显示除“admin”以外的任何内容。这样它就可以完美地工作。

    这对于异常非常好,它们按照它们应该的方式工作,但不幸的是,它无法识别管理异常。我在想,把admin添加为
    RewriteRule^adminhttp://newsite.com/admin [L,R]
    ,但我还是应该写一个“将所有内容重写到new.com”,我担心它会再次将所有内容重定向到那里。这不包括/admin,我认为您存在与浏览器缓存相关的问题。清除缓存或尝试使用不同的浏览器来测试这一点。我的代码看起来像
    RewriteRule^管理https://new.com/ [L,R]
    而且它不排除管理员,即使我清除缓存,或者在匿名模式下观看,它仍然会从/admin重定向到new.com,我现在无法访问旧站点的后端。我甚至尝试将
    重写规则^admin[L]
    添加到所有规则的顶部,它仍然会重定向到new.com…是否/admin是一个子文件夹?