我已经创建了一个PHP分页系统,但是我想在地址栏中隐藏_GET变量。
此刻我的看起来像这样:http://example.com/images.php?page=1
但我看到一些网站有http://example.com/images/1/
。
只是想知道他们是怎么做到的?谁能指出我正确的方向?干杯
答案 0 :(得分:6)
您需要Web服务器的支持才能正确获取请求,并在/images/1/
内部将/images.php?page=1
的请求重写为{{1}}。大多数Web服务器都有一个模块或扩展来支持Apache’s mod_rewrite,lighttpd’s mod_rewrite,ISAPI 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_rewrite和RewriteEngine
将所有请求重定向(其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]