apache - 强制删除 .htaccess 中的 .php 扩展名

标签 apache .htaccess mod-rewrite

我知道有很多问题,例如“如何删除 .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]

最佳答案

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

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^/]+)\.php(\?|\ |$)
RewriteRule ^ /%2/ [L,R=301]

关于apache - 强制删除 .htaccess 中的 .php 扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15505498/

相关文章:

php - 让 MySQL 不从值中删除前导 0

apache - .htaccess 重写到子文件夹

.htaccess - 在 htaccess 规则中设置 www 可选

apache - 无法在配置中设置 mod_rewrite LogLevel

apache - 如何阻止 Chrome 重定向到 HTTPS?

apache - RewriteCond 反向引用不起作用

.htaccess - 屏蔽并重定向到不同服务器上的子目录

php - 使用 .htaccess 强制将 xxx.php URL 转发到 xxx

php - ajax 表单请求不适用于 mod_rewrite

apache - Laravel 总是返回 404