从一个文件夹到另一个域的Apache mod_rewrite不能使用尾部斜杠

时间:2018-01-25 16:37:48

标签: apache .htaccess mod-rewrite

我尝试使用旧服务器上old.domain.tld/project目录中的domain.tld/subfolder/project重写从.htaccessproject的网址。我想我需要检查主机名,这样规则才适用于旧服务器,即使.htaccess文件也放在新服务器上。

我已尝试过以下.htaccess文件:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^old\.domain\.tld$ [NC]
RewriteRule ^(.*)$ https://domain.tld/subfolder/project/$1 [R=301,L]

这适用于https://old.domain.tld/project/index.php?p=q(重定向到https://domain.tld/subfolder/project/index.php?p=q)等网址,但不包含没有尾部斜杠的网址,https://old.domain.tld/project最终会被重定向到https://domain.tld。很奇怪!如何使这两种类型的URL工作?

我尝试了一种相当不同的方法,使其成为通用重定向,即使文件夹名称不是project也可以包含,但这也有同样的问题:

 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^old\.domain\.tld$ [NC]
 RewriteCond %{REQUEST_URI} ^(.*)$
 RewriteRule . https://domain.tld/subfolder/%1 [R=301,L]

在服务器范围的配置中,斜杠会附加到索引文件的所有请求,例如old.domain.tld/project被重定向到old.domain.tld/project/。这会导致问题吗?

0 个答案:

没有答案