使用Apache的RewriteEngine,如何将/foo
重写为index.php?x=foo
,但在/foo/bar
中将index.php?x=foo&bar=true
重写为RewriteRule
?
我现在有这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)? index.php?x=$1 [L,NC] # rewrites /foo to index.php?x=foo, but not /foo/bar to index.php?x=foo&bar=true
这仅将/foo
重写为index.php?x=foo
,而不是/foo/bar
重写为index.php?x=foo&bar=true
。如何将其添加到RewriteRule
?
答案 0 :(得分:2)
请尝试以下规则:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([^/]+)$ index.php?x=$1 [L]
RewriteRule ^([^/]+)/([^/]+)$ index.php?x=$1&$2=true [L]
如果请求的URI可以映射到现有文件或目录,则第一个规则是中断。否则,如果其中一个规则与请求的URI路径匹配,则测试并应用其他两个规则。