如何重写/ foo到index.php?x = foo,还有/ foo / bar到index.php?x = foo& bar = true在一个RewriteRule中?

时间:2010-07-28 18:46:03

标签: .htaccess mod-rewrite

使用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

1 个答案:

答案 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路径匹配,则测试并应用其他两个规则。