Apache 如何在htaccess中添加几个自定义异常,并将url-s的其余部分重定向到另一个url?
有两个网站,old.com和new.com。在old.com的.htaccess中,我有一些自定义URL,它们应该被重定向,如: *一,。example.html->new/something/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
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是一个子文件夹?