2010-08-10 137 views
0

所以我读了一些关于apache的mod_rewrite如何操作的东西,但对于像我这样的初学者来说,它似乎太模糊了。通过.htaccess翻译网址

可以说,我想掩盖site.com/userpage.php到site.com/或site.com/userpage

甚至去除GET请求..

site.com/userpage.php?query=yessite.com/userpage.phpsite.com/userpage

怎么能我通过使用htaccess甚至其他方法来做到这一点?

谢谢你们

回答

0

首先,记得把这个线你.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代替。

0

如果你不想追加GET请求,为什么不使用POST?

此外,您可以使用MultiViews来允许/userpage.php作为/ userpage访问。

Options Indexes FollowSymLinks Includes MultiViews

的方式多视图的工作,它会检查名为目录userpage,如果发现没有,那么它会去文件,只是一个抬头的情况下,你有一个名为userpage以及。