首先,记得把这个线你.htaccess
任何重写之前:
RewriteEngine on
如果你想site.com/something
如果存在不改变URL显示site.com/something.php
,这样做:
RewriteCond %{REQUEST_URI}.php -f
RewriteRule .* %{REQUEST_URI}.php
如果存在[你请求的文件] .php文件,它仍会显示你输入的相同的URL。如果php文件不存在,它仍然会给你一个404应有的。 (这就是-f
的用途。)
没有办法完全隐藏GET请求。您可以摆脱GET请求,但是它们不会对您的脚本可用,也没有意义。但是,你可以让它看起来更漂亮。例如,如果你想site.com/userpage/item/30
显示的site.com/userpage.php?item=30
的内容,你可以做这样的事情:
RewriteRule ^/userpage/item/(.*)$ userpage.php?item=$1
你也可以将它与任何GET价值的工作,像这样的规则:
RewriteRule ^/userpage/(.*)/(.*)$ userpage.php?$1=$2
实际上,您可以改为使用site.com/userpage/query/yes
访问site.com/userpage.php?query=yes
。这几乎是你能做的最好的事情; GET值必须以某种方式来自URL,因此如果您希望完全隐藏输入内容,则必须使用POST代替。