我正在寻找一种可以将https://example.com/foo.php
重定向到https://example.com/foo
以及将https://example.com/foo/
重定向到https://example.com/foo
的方法。
Stack Overflow上发布了大量的解决方案,但没有一个解决方案能够解决用户试图访问https://example.com/foo/bar/baz.php
等文件的实例。
有人能用.htaccess来解决这个问题吗?
我目前拥有的代码是:
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}'s([^.]+).php
RewriteRule ^ %1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}'s([^.]+)/'s
RewriteRule ^ %1 [R=301,L]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]
试试这些规则:
RewriteEngine On
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}'s(.+?)'.php['s?] [NC]
RewriteRule ^ %1 [R=302,L,NE]
## Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [NE,R=302,L]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
请记住在测试前清除浏览器缓存。