【问题标题】:How to redirect to a different domain EXCEPT when url matches certain patterns当 url 匹配某些模式时如何重定向到不同的域
【发布时间】:2013-10-07 13:58:35
【问题描述】:

我的 .htaccess 文件中有以下规则,应该像这样重定向请求:

http://www.olddomain.com/some/url/ -> http://www.newdomain.com/some/url/

除非路径匹配 /images/someimage.jpg 之类的东西

规则中有一些这样的例外:

RewriteRule ^(?!images/.*|css/.*|js/.*) http://www.newdomain.com/$1 [R=301,L]

当我使用 http://htaccess.madewithlove.be/ 进行测试时,这与预期的一样

但是,在实时服务器上,永远不会设置 $1。与模式匹配的网址只是重定向到主页“/”

这是我的 htaccess 文件的第一条规则,在 RewriteEngine On 之后

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案1】:

    用这个替换你的规则:

    RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/((images|css|js)/ [NC]
    RewriteRule ^ http://www.newdomain.com%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 谢谢,这似乎可行 - 任何想法为什么我的尝试没有奏效?正则表达式似乎没有问题,但有些不正确(无论设计与否) - mod-rewrite 的方式就是这样。
    • 您的代码实际上甚至没有捕获$1RewriteRule ^(?!(?:images|css|js)/)(.*)$ http://www.newdomain.com/$1 [R=301,L] 很可能会起作用。
    • 提示:那个测试站点不是很不可靠。您应该始终使用自己的网络服务器进行测试。
    猜你喜欢
    • 2011-04-29
    • 2019-05-30
    • 2016-11-18
    • 2011-07-02
    • 2018-11-17
    • 2020-09-06
    • 2012-08-05
    • 2022-01-01
    • 2016-06-27
    相关资源
    最近更新 更多