URL:如何使 get 参数看起来像目录


URL: How to make get parameters looks like directories

此请求:

http://domain.com/newest

应重写为:

http://domain.com/index.php?list=newest

我试图用.htaccess实现这种重定向,并得出了这个结论:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?list=$1 [L,QSA]

但这似乎仍然行不通。如何让此重写和重定向工作?

您必须以这种方式更改RewriteRule条件:

RewriteRule ^(.+)$ /index.php?list=$1 [L,QSA]

然后,在我们的脚本中,您可以通过 $_SERVER[QUERY_STRING] 访问重写的规则,而原始请求通常可以通过 $_SERVER[REQUEST_URI] 获得。

请注意 - 如果您打算重新映射所有"未找到"传入请求,您也可以简单地使用此规则:

RewriteRule . /index.php [L,QSA]

然后,在文件的顶部index.php处理$_SERVER[REQUEST_URI]并为变量分配正确的值$list

因此,即具有 URL http://domain.com/newest:

$list = substr( parse_url( $_SERVER['REQUEST_URI'])['path'], 1 );

$list将假定newest为值。