2013-08-03 75 views
0

我在htaccess文件有这个重定向.PHP没有.PHP

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

,这将使人们获得server/login.php刚刚server/login,但我怎样才能让这个如果server/login.php被输入到地址栏它会重定向到server/login

由于这个问题,我的网站得到不同的点击,而不仅仅是一个网址,谢谢你的努力和时间。

回答

1

你可以用一个外部重定向做到这一点:

RewriteRule ^(.*)\.php$ $1 [R,L] 

的R-标志是一个临时重定向。如果事情按照您期望的那样工作,您可以使用R = 301使其成为永久重定向。有关更多信息,请参阅the documentation

编辑:用你目前的规则,这将创建一个无限循环。如果您正在运行Apache 2.3.9或更高版本,请在您的内部重写规则中使用END标志。如果你不愿或不能使用这样的Apache版本,你可以使用“THE_REQUEST”招停止一个无限循环,因为如果请求来自外界,这将只匹配:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)\.php[\s\?] [NC] 
RewriteRule^%1 [R,QSA,L] 
1

更改你的基地路径RewriteBase /path/

RewriteEngine on 
RewriteBase /path/ 

RewriteCond %{THE_REQUEST} \.php 
RewriteRule ^(.*)\.php$ $1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php