0

所以我读了一些关于 apache 的 mod_rewrite 如何做到这一点的东西,但对于像我这样的初学者来说似乎太模糊了。

假设我想将 site.com/userpage.php 屏蔽site.com/ 或site.com/userpage

甚至删除获取请求..

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

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

多谢你们

4

2 回答 2

0

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

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

Options Indexes FollowSymLinks Includes MultiViews

MultiViews 的工作方式是检查名为 userpage 的目录,如果找不到,它将转到该文件,以防万一您也有一个名为 userpage 的目录。

于 2010-08-10T20:08:15.933 回答
0

.htaccess首先,请记住在任何重写之前将此行放入您的:

RewriteEngine on

如果要在不更改 URL 的情况下site.com/something显示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.php?query=yes改为访问site.com/userpage/query/yes。这几乎是你能做的最好的;GET 值必须以某种方式来自 URL,因此如果您希望您的输入完全隐藏,则必须使用 POST 代替。

于 2010-08-12T04:08:10.947 回答