我有两个网站,一个用于开发,一个用于测试。它们都是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一级,但它没有引用任何一个站点。
答案 0 :(得分:0)
需要注意的关键是[R=301]
。这导致永久重定向,浏览器缓存并记住,而不向Web服务器发出任何请求。所以.htaccess文件的当前内容是无关紧要的 - 唯一相关的是浏览器缓存中的内容..
故事的道德:在开发过程中不要使用301重定向。