将.php重定向到没有.php

时间:2013-08-03 12:36:29

标签: php .htaccess

我的htaccess文件中有这个

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

允许人们仅server/login.php访问server/login,但如何才能将server/login.php输入地址栏,以便重定向到server/login

由于您的努力和时间,我的网站获得了不同的点击而不仅仅是针对一个网址,感谢您的努力和时间。

2 个答案:

答案 0 :(得分:1)

您可以使用外部重定向执行此操作:

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

R-flag是临时重定向。如果事情按预期工作,您可以使用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 :(得分: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