2
我應該如何應用不同的RewriteRule在.htaccess
取決於URL中的參數數量?例如,htaccess頁面重定向參數條件
1)如果URL有1個參數比它應該去products.php
www.domain.com/mobile
RewriteRule ^([0-9a-zA-Z_-]+) products.php?parent=$1 [NC,L]
2)如果有2個參數,那麼它應該去category.php
www.domain.com/mobile/apple
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) category.php?parent=$1&child=$2 [NC,L]
3)如果有3個參數,那麼它應該去list.php的
www.domain.com/mobile/apple/iphone6
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) list.php?parent=$1&child=$2&subchild=$3 [NC,L]
我在一個新手但你可以看到我已經學會了寫字重寫規則,但不能明白,我怎麼可以把我所有的上述規定在一個單一的.htaccess文件,因爲如果我把它像這樣
RewriteEngine On
RewriteRule ^([0-9a-zA-Z_-]+) products.php?parent=$1 [NC,L]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) category.php?parent=$1&child=$2 [NC,L]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) list.php?parent=$1&child=$2&subchild=$3 [NC,L]
它就會犯糊塗並且它應該是偏離的,但是如何根據參數的數量來應用這些規則?我希望我能夠明確提出我的問題。
我的意思是說,如果這是一個編程的問題不是這樣的
if($countParameters = 1)
{
//Rule 1
}
else if($countParameters = 2)
{
//Rule 2
}
else if($countParameters = 3)
{
//Rule 3
}
但其.htaccess
,我不明白我怎麼能將我的規則根據參數個數。
什麼呢?$手段? – 2015-02-11 15:20:12
$意思是「匹配字符串結尾」,基本上你正在評估所有的表達式,因爲正則表達式可能是貪婪的,你保證檢查所有表達式 – 2015-02-11 15:22:10
你也可以顛倒規則的順序,以便它檢查是否有3個參數第一,2秒,只有最後一個;只是爲了雙倍安全。 – CD001 2015-02-11 15:23:51