无扩展名的URL末尾斜杠重定向

问题描述

| 我已经在Dreamhost上托管的多个域上测试了以下代码,并且可以正常工作-去年在我添加的较新域上除外。
RewriteEngine on

#unless directory,remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [R=301,L]

#redirect external .PHP requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.*)\\.PHP([#?][^\\ ]*)?\\ HTTP/
RewriteRule ^(.*)\\.PHP$ $1 [R=301,L]

#resolve .PHP file for extensionless PHP urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\\.PHP -f
RewriteRule ^(.*)$ $1.PHP [L]
有效的示例: ryanvanetten.com/resources/lame/和ryanvanetten.com/resources/lame.PHP重定向到ryanvanetten.com/resources/lame  实际提供的文件是lame.PHP 损坏的示例: airve.com/test/file正确提供了file.PHP,但重定向airve.com/test/file/和airve.com/test/file.PHP无效。试试看,您会发现它们似乎在吐出内部绝对路径。当我分别尝试每个重定向和下面尝试基本重定向时,会发生相同的事情。
Redirect 301 /test/file/ /test/file
.htaccess中没有其他内容。对这个问题有什么想法吗?     

解决方法

        在这两种情况下,您都将重定向到ѭ2,并且您没有RewriteBase指令来告诉Apache此类相对路径的根目录。 尝试在$ 1之前添加根斜杠以将其锚定到Web服务器的根目录,例如:
RewriteRule ^(.*)$ /$1.php [L]