2

我知道有很多问题,例如“我如何删除 .php 扩展名,以便 /test/ 将成为 /test.php”,但如果用户直接转到 test.php,它不会替换扩展名。所以我想替换它应该是/的.php。这是我正在使用的 .htacces 的一部分:

RewriteEngine on

RewriteRule stuff\.php /other_stuff/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
4

1 回答 1

3

您需要检查实际请求而不是 URI(由其他规则重写)。该%{THE_REQUEST}变量在重写引擎的过程中不会改变。RewriteEngine尝试在指令下方添加这些规则:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^/]+)\.php(\?|\ |$)
RewriteRule ^ /%2/ [L,R=301]
于 2013-03-20T10:06:07.337 回答