.htaccess RewriteRule / RedirectMatch添加尾部斜杠,不起作用

时间:2014-09-30 18:10:10

标签: apache .htaccess mod-rewrite redirect

我有两个网站,一个用于开发,一个用于测试。它们都是VPS上的子目录/子域。

我在每个文件上都有一个相同的.htaccess文件,通过301重定向添加一个尾部斜杠,即:

RewriteEngine On

RedirectMatch 301 /dm/secure/([^/]+)$ /dm/secure/$1/

在开发网站上,当我访问没有尾部斜杠的网址时,例如https://reports-dev.example.com/dm/secure/Client,它将我重定向到 https://reports-dev.example.com/home/example/public_html/reports-dev/dm/secure/Client/

在测试网站上,它没有效果 - 例如访问https://reports-test.example.com/dm/secure/Client逗留(并获得404)。

我也尝试过: - 使用RewriteBase /RewriteBase /dm/以及RewriteBase /dm/secure - 使用RewriteRule /dm/secure/([^/]+)$ /dm/secure/$1/ [R=301,L]

结果没有变化。

我有点不高兴,因为它无法正常工作,但更令人担忧的是它在开发站点和测试站点之间的行为方式不同。

在public_html中有一个.htaccess一级,但它没有引用任何一个站点。

1 个答案:

答案 0 :(得分:0)

需要注意的关键是[R=301]。这导致永久重定向,浏览器缓存并记住,而不向Web服务器发出任何请求。所以.htaccess文件的当前内容是无关紧要的 - 唯一相关的是浏览器缓存中的内容..

故事的道德:在开发过程中不要使用301重定向。