繁体   English   中英

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

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

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

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

我如何根据 RewriteRules 和 RewriteConds 来实现/编写它...?

我已经尝试了一切,我可以轻松地将 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 之前,请确保清除浏览器缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM