我的 .htaccess 文件中有一个重写条件,它不需要 .php 文件扩展名
RewriteEngine On
RewriteRule ^([^.]+)$ $1.php
所以 http://site.com/blog打开http://site.com/blog.php
但是如果老用户输入/blog.php 它也会加载页面
有没有办法阻止带有 .php 或任何其他文件扩展名的页面或将其重定向到没有它的页面?
我的意思是,如果用户输入/blog.php 或/blog.asp,它应该加载失败或重定向到/blog(没有扩展名)
最佳答案
实现此目的的更好方法是仅在存在具有该名称的 .php
时才重写。否则为原始 URL 抛出 404
。第二组规则将负责删除扩展并避免重定向循环。
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteCond %{THE_REQUEST} ^(?:GET|POST)\ /.*\.php\ HTTP.*$ [NC]
RewriteRule ^(.*)\.php$ $1 [R=301,L]
关于php - 防止加载带有 .php 文件扩展名的页面(仅在没有它的情况下加载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19606787/