.htaccess 重写规则将所有页面从一个域重定向到另一个域,除了一个特定的 URL?

.htaccess rewrite rule to redirect all pages from one domain to another EXCEPT for one specific URL?

我已经浏览了至少 50 个不同的问题和关于此主题的帖子,并尝试了所有方法,但仍然无法弄清楚如何做到这一点。

我需要将所有 pages/URLs 从 domain1.com 重定向到 domain2.com 除了特定的 URL 像 domain1.com/paypal/ipn (以防止 Paypal IPN 通知从被打破...长话短说)。

如何根据 RewriteRules 和 RewriteConds 提取 off/write...?

我真的尝试了所有方法,我可以轻松地将 domain1.com 重定向到 domain2.com:

    RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.com$ [NC]
    RewriteRule (.*) https://www.domain2.com%{REQUEST_URI} [R=301,L]

但是另一个要求,忽略并跳过特定的 URL 以任何方式重定向,到目前为止没有任何效果...

有人吗?

要从重定向中排除特定页面,您可以使用以下命令:

RewriteCond %{REQUEST_URI} !/paypal/ipn [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.com$ [NC]
RewriteRule (.*) https://www.domain2.com%{REQUEST_URI} [R=301,L]

如果要排除多个页面或 URI,您可以使用带有 OR 标志的 RewriteCond 或在规则中使用基于正则表达式的模式

多个条件:

RewriteCond %{REQUEST_URI} !/paypal/ipn [NC,OR]
RewriteCond %{REQUEST_URI} !/foo/bar [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.com$ [NC]
RewriteRule (.*) https://www.domain2.com%{REQUEST_URI} [R=301,L]

基于正则表达式的模式:

RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.com$ [NC]
RewriteRule !(page1|page2) https://www.domain2.com%{REQUEST_URI} [R=301,L]

确保在测试这个新的 301 reditect 之前清除浏览器缓存。