5

我正在尝试重写所有www.site.com/hello to www.site.com/index.php?p=hello 代码,它适用于以下代码(in .htaccess):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/?$ /index.php?p=$1

但我想保持旧链接正常工作,所以www.site.com/?p=hello会留下来www.site.com/?p=hello

我已经尝试了以下代码,但它不会工作

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\?p=)
RewriteRule ^([^/]*)/?$ /index.php?p=$1
4

1 回答 1

5

我找到了答案。

错误是试图GETREQUEST_URI. 正确的用法应该是QUERY STRING这样的:

RewriteCond %{QUERY_STRING} !(p=.*)$ 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/?$ /index.php?p=$1
于 2013-08-16T11:20:50.863 回答