我试图将所有URLS从一个域中的一个目录重定向到同一服务器上的另一个域,但无法使其工作。我该如何解决这个问题?
我试过:
RewriteBase /
RewriteRule ^dir1\/dir2(.*)$ https://domain-2.org/$1 [L,R=301] RewriteEngine On
RewriteBase /
RewriteRule ^dir1/dir2(.*)$ https://domain-2.org/$1 [L,R=301]我希望重定向所有类似于以下模式的URLS:
www.domain-1.org/dir1/dir2/url-1
www.domain-1.org/dir1/dir2/url-2
www.domain-1.org/dir1/dir2/url-N
https://domain-1.org/dir1/dir2/url-1
https://domain-1.org/dir1/dir2/url-2
https://domain-1.org/dir1/dir2/url-N
http://domain-1.org/dir1/dir2/url-1
http://domain-1.org/dir1/dir2/url-2
http://domain-1.org/dir1/dir2/url-N
https://www.domain-1.org/dir1/dir2/url-1
https://www.domain-1.org/dir1/dir2/url-2
https://www.domain-1.org/dir1/dir2/url-N
http://www.domain-1.org/dir1/dir2/url-1
http://www.domain-1.org/dir1/dir2/url-2
http://www.domain-1.org/dir1/dir2/url-N至:
https://domain-2.org/dir1/dir2/url-1
https://domain-2.org/dir1/dir2/url-2
https://domain-2.org/dir1/dir2/url-N发布于 2019-04-12 20:54:34
RewriteRule ^dir1\/dir2 2(.*)$ https://domain-2.org/$1
假设在这两种情况下都有RewriteEngine On,那么您的两次“尝试”实际上是相同的。RewriteBase在这里是不相关的。
$1反向引用是指RewriteRule模式中捕获的组,即。(.*) -- /dir1/dir2之后的所有内容--所以这不会重定向到另一个域上的“相同目录”。
因为两个域都指向同一个服务器(我假设文件系统上的位置相同),所以您需要显式地检查域(即。(主机名)在重定向中。
相反,请尝试以下几点:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain-1\.org [NC]
RewriteRule ^dir1/dir2/.* https://domain-2.org/$0 [R=302,L]$0是对整个RewriteRule模式匹配的URL路径的反向引用。例如:dir1/dir2/url-N。
注意,这是302 (临时)重定向。使用302进行测试,并且在确认此操作正常时,只会更改为301 (永久)重定向。301系统由浏览器持久地缓存,因此可能会造成测试问题。
在测试之前,您需要清除浏览器缓存。
https://serverfault.com/questions/962861
复制相似问题