htaccess-无法从url php中删除文件扩展名
我正在尝试以下规则从文件名中删除文件扩展名,但问题是它显示它已被删除,但当我再次登录时,它不会重定向到我的主页htaccess-无法从url php中删除文件扩展名,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我正在尝试以下规则从文件名中删除文件扩展名,但问题是它显示它已被删除,但当我再次登录时,它不会重定向到我的主页 Options +FollowSymLinks -MultiViews RewriteEngine On RewriteBase \ RewriteCond %{HTTP_HOST} !^www.example.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] RewriteCond %{THE_R
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase \
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
谢谢在重定向中,只需键入不带扩展名的页面名称,例如标题(“位置:索引”)或重定向用户(“索引”)并在.htaccess文件中使用下面的代码。现在浏览器上的链接将显示为“localhost/index”
我觉得你的规则有点不对劲。您正在使用
请求
将php扩展重定向到非php扩展,但在重写规则中未在%1
之后使用/
,因此当读取下一个规则时,它不匹配,因为只有在该规则中存在/
时,它才会在内部重定向。因此,在第二条规则中的%1之后添加一个正斜杠,或者在最后一条规则中选择反斜杠。在最后一条规则中,我只是将其设置为可选的,这样它将以任何方式匹配
试试这个更新,看看它是如何工作的
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ /([^&\ ]+).php [NC]
RewriteRule ^ /%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/?$ $1.php [NC,L]
您在浏览器的位置输入的url是什么?www.example.com/homePage.phpWhy您在RewriteBase指令中使用反斜杠?这可能有帮助:我尝试了所有这些,但没有任何帮助。您可以更具体一点吗?我们不知道您的设置如何。你说它不工作是什么意思?你有错误吗?另外,您使用的确切url是什么?你不能登录是什么意思?会发生什么?
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ /([^&\ ]+).php [NC]
RewriteRule ^ /%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/?$ $1.php [NC,L]