此请求:
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
为值。