小编Xav*_*ier的帖子

如何使用Apache Mod_rewrite删除php扩展,同时保留GET参数?

我试图从我的网站删除PHP扩展.当用户请求PHP文件时,PHP将被删除,用户将被重定向,当用户键入不带PHP的URL时,将提供实际的PHP文件.这很有效,除非URL中有GET参数.我的规则如下:

# remove .php ONLY if requested directly
RewriteCond %{THE_REQUEST} (\.php\sHTTP/1)
RewriteRule ^(.+)\.php$ /$1 [R=301,L,QSA]

# remove trailing slash ONLY if it is not an existing folder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# rewrite to FILENAME.php if such file does exist and is not a folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)

我认为这应该已经能够删除PHP,即使有任何GET参数,但它失败了.我也尝试过这样的事情:

RewriteCond %{THE_REQUEST} (\.php\sHTTP/1)
RewriteRule ^(.)\.php(.)$ $1$2 [R=301,L,QSA]
Run Code Online (Sandbox Code Playgroud)

它也没用,php还在那里.但如果我尝试:

RewriteRule ^(.)\.php(.)$ $1$2 [R=301,L,QSA]
Run Code Online (Sandbox Code Playgroud)

即,删除RewriteCond,删除php扩展并保留参数,但页面将不会被提供,因为浏览器说有太多的重定向.

有什么想法吗?

php apache parameters mod-rewrite

5
推荐指数
1
解决办法
1624
查看次数

标签 统计

apache ×1

mod-rewrite ×1

parameters ×1

php ×1