隐藏地址栏中的文件

时间:2010-05-13 13:36:41

标签: url-rewriting

我已经创建了一个PHP分页系统,但是我想在地址栏中隐藏_GET变量。

此刻我的看起来像这样:http://example.com/images.php?page=1

但我看到一些网站有http://example.com/images/1/

只是想知道他们是怎么做到的?谁能指出我正确的方向?干杯

6 个答案:

答案 0 :(得分:6)

您需要Web服务器的支持才能正确获取请求,并在/images/1/内部将/images.php?page=1的请求重写为{{1}}。大多数Web服务器都有一个模块或扩展来支持Apache’s mod_rewritelighttpd’s mod_rewriteISAPI Rewrite module for ISS等行为。

答案 1 :(得分:1)

这叫做PATH_INFO

服务器必须支持并启用它。

如果是,则可以使用$_SERVER["PATH_INFO"]

访问它

答案 2 :(得分:0)

大多数框架都会处理它,但您需要配置Web服务器来处理它。以下是有关设置apache htacces的说明from CodeIgniter

答案 3 :(得分:0)

如果你正在使用apache,那么你可以使用mod_rewrite来做这种魔术:http://en.wikipedia.org/wiki/Rewrite_engine

答案 4 :(得分:0)

如果您的服务器是Apache,您可以创建一个名为.htaccess的文件(它没有文件名,只有一个扩展名 - 值得在本地计算机上为其命名,因为某些文件系统会隐藏没有名称的文件)并学习如何使用RewriteRules

它非常容易用于您想要的简单重写。

示例.htaccess文件:

RewriteEngine On

#Translate http://address.com/images/1/ to http://address.com/images.php?page=1
RewriteRule ^images/(.*)$ / images.php5?page=$1

答案 5 :(得分:0)

通常使用Apache mod_rewriteRewriteEngine将所有请求重定向(其URL在内部重新编译)为单个PHP脚本,然后(在该脚本中)检查URL并匹配此URL的处理程序(如果有更多处理程序)与相应的参数被调用。 PHP中的一些框架(通常为MVC ones)完全构建在一个 index.php 上,所有请求都被“重定向”(URL重写)。

如果您只需要使用?page=解决问题,请尝试将此网址/images/1/重写为/images.php?page=1(正如Gumbo建议的那样),并在Apache配置中使用此功能( .htaccess < / em>文件例如):

RewriteEngine on
RewriteRule ^images/([0-9]+)/?$ images.php?page=$1 [L]