Apache 用否定条件重写cond
我正在尝试将所有Apache 用否定条件重写cond,apache,.htaccess,mod-rewrite,redirect,rewrite,Apache,.htaccess,Mod Rewrite,Redirect,Rewrite,我正在尝试将所有www.site.com/hello重写为www.site.com/index.php?p=hello 它与以下代码一起工作(在.htaccess中): 但是我想保持旧链接正常工作,这样www.site.com/?p=hello将保持www.site.com/?p=hello 我已经尝试了以下代码,但它不起作用 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(\?p=) RewriteRule ^(
www.site.com/hello重写为www.site.com/index.php?p=hello
它与以下代码一起工作(在.htaccess
中):
但是我想保持旧链接正常工作,这样www.site.com/?p=hello
将保持www.site.com/?p=hello
我已经尝试了以下代码,但它不起作用
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\?p=)
RewriteRule ^([^/]*)/?$ /index.php?p=$1
我找到了答案
错误是试图使用REQUEST\u URI
获取get
参数。正确的用法应该与查询字符串一起使用,如下所示:
RewriteCond %{QUERY_STRING} !(p=.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/?$ /index.php?p=$1
RewriteCond %{QUERY_STRING} !(p=.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/?$ /index.php?p=$1