我正在尝试重写所有 www.site.com/hello to www.site.com/index.php?p=hello
它适用于以下代码(在 .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
最佳答案
我找到了答案。
错误是试图获取 GET
参数与 REQUEST_URI
.正确的用法应该是 QUERY STRING
像这样:
RewriteCond %{QUERY_STRING} !(p=.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/?$ /index.php?p=$1
关于apache - 使用否定条件重写条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882838/