6

我想要所有的查询

http://mysite.com/something/otherthing?foo=bar&x=y

改写为

http://mysite.com/something/otherthing.php?foo=bar&x=y

换句话说,只需将 .php 扩展名设为可选,普遍适用。

4

5 回答 5

6

我会这样做。基本上,如果文件不存在,请尝试将 .php 添加到其中。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ $1.php [QSA,L]
于 2008-12-20T19:57:26.847 回答
1

这有效:

RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^/?([^/\.]+)$ /$1.php [L]

这个想法是确保有一个查询字符串(问号加东西),如果有,检查问号之前的东西是否没有扩展名,如果有,附加.php。

于 2008-10-08T17:49:09.477 回答
1

如果您可以更改 httpd.conf 和内容,您还可以输入:

ForceType application/x-httpd-php

在文件中,因为它将强制所有调用的路径都是 PHP 文件。我认为这也适用于查询字符串。

于 2008-10-08T19:49:42.697 回答
0

就像是...

RewriteRule /something/(.+)?(.+) /something/$1.php?$2

可能会工作。

于 2008-10-08T17:37:27.753 回答
0

仅匹配没有扩展名的路径:

RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php

编辑:在我的测试中,查询字符串会自动传递。如果没有,您可以改用它:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php?%1
于 2008-10-10T07:00:53.437 回答