如何解决无扩展名的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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。