2014-04-30 50 views
1

我有下面的代碼重寫規則的.htaccess重寫規則允許子目錄的水平

RewriteRule ^(.*)/(.*)/(.*)$ /page.php?menu=$1&submenu=$2&submenu2=$3 [L,QSA,NC] 
RewriteRule ^(.*)/(.*)$ /page.php?menu=$1&submenu=$2 [L,QSA,NC] 
RewriteRule ^(.*)$ /page.php?menu=$1 [L,QSA,NC] 

我需要它做我這一點:

如果url是一樣的東西mydomain.com/testmydomain.com/page.php?menu=test

如果url是一樣的東西mydomain.com/test/sitemydomain.com/page.php?menu=test&submenu=site

如果網址是什麼像mydomain.com/test/site/stuffmydomain.com/page.php?menu=test&submenu=site&submenu2=stuff

雖然這些似乎相互衝突。

任何想法,我可以改進它,使其工作。

+2

使用[^ /] +的'''而不是*'。 – Gumbo

+0

所以'RewriteRule ^([^ /] +)/([^ /] +)/([^ /] +)$'??? – Tom

+0

是的 – Gumbo

回答

0

讓你的規則是這樣的:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /page.php?menu=$1&submenu=$2&submenu2=$3 [L,QSA] 
RewriteRule ^([^/]+)/([^/]+)/?$ /page.php?menu=$1&submenu=$2 [L,QSA] 
RewriteRule ^([^/]+)/?$ /page.php?menu=$1 [L,QSA]