htaccess-无法从url中删除文件扩展名php

问题描述:

我在尝试从文件名中删除文件扩展名,但问题在于它显示删除了它,但是当我再次登录时,它不会重定向到我的主页。htaccess-无法从url中删除文件扩展名php

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 

谢谢

+0

你在浏览器的位置输入了什么网址? – starkeen

+0

www.example.com/homePage.php – Aisha

+1

为什么在RewriteBase指令中使用反斜杠? – starkeen

在您重定向只是不带扩展名,例如,输入页面名称。 header('Location:index');redirect_user('index');并在你的.htaccess文件中使用下面的代码。现在浏览器上的链接将被称为“本地主机/索引”

RewriteEngine on 
RewriteRule ^([^./]{3}[^.]*)$ /index.php?page=$1 [QSA,L] 

我认为你的规则只是一点点关闭。您正在使用THE_REQUEST将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] 
+0

它不工作....我无法登录时,我使用这些规则 – Aisha

+0

你能更具体一点?我们不知道你的设置如何。你是什​​么意思,它不工作?你有错误吗?还有什么是您使用的EXACT网址?你是什​​么意思,你不能登录?怎么了? –