我希望您能为我翻译所有类似于以下查询的内容:
http://mysite.com/something/otherthing?foo=bar&x=y
需要重新撰写为
http://mysite.com/something/otherthing.php?foo=bar&x=y
换句话说,就是让.php扩展名成为可选项,普遍适用。
我希望您能为我翻译所有类似于以下查询的内容:
http://mysite.com/something/otherthing?foo=bar&x=y
需要重新撰写为
http://mysite.com/something/otherthing.php?foo=bar&x=y
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ $1.php [QSA,L]
这个有效:
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^/?([^/\.]+)$ /$1.php [L]
这个想法是确保有一个查询字符串(问号加上一些东西),如果有的话,检查问号前面的东西是否没有扩展名,如果是,则添加 .php。
ForceType application/x-httpd-php
在文件中加入这段代码,它将强制所有调用的路径都是 PHP 文件。我认为这也适用于查询字符串。
类似于...
RewriteRule /something/(.+)?(.+) /something/$1.php?$2
可能会起作用。
仅匹配没有扩展名的路径:
RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php
编辑:在我的测试中,查询字符串会自动传递。如果没有,您可以使用以下方法:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php?%1
[QSA, L]
传递查询字符串(L
表示在此规则后不再处理)。 - NateS