从htaccess中删除php扩展,但保持PATH_INFO功能

时间:2016-06-03 04:34:14

标签: php apache .htaccess mod-rewrite

我制作了http://localhost/index.php/add/

这样的网址

index.php之后的/ add /后面是$ _SERVER ['PATH_INFO'],可用于PHP编码。

我想使用.htaccess从此网址中删除.php,并且仍然继续使用$ _SERVER ['PATH_INFO'],无论段有多少。

例如,

http://localhost/index.php/add/cars/
http://localhost/index.php/add/cars/japan/
http://localhost/index.php/add/cars/japan/tokyo/

我还想在结尾处使用尾部斜杠,如上例所示。

我可以使用下面的脚本删除.php扩展名,但我还需要更多。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

2 个答案:

答案 0 :(得分:2)

您可以使用:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^index(/.+)?$ index.php$1 [NC,L]

如果您还使用其他名称(并非总是index)。改变最后一行:

RewriteRule ^([^/.]+?)(/.+)?$ $1.php$2 [L]

答案 1 :(得分:0)

试试这个

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]