2013-01-07 46 views
1

我有這樣的正則表達式代碼:正則表達式衝突

RewriteCond %{REQUEST_URI} !/login([/]{0,1}) [NC] 
RewriteCond %{REQUEST_URI} !/search/([/]{0,1}) [NC] 
RewriteCond %{REQUEST_URI} !/search/([^.]+)([/]{0,1}) [NC] 

RewriteRule ^([^.]+)/?$ products.php/$1/ [NC,L] 
RewriteRule ^([^.]+)/([^.]+)/?$ products.php/$1/$2/ [NC,L] 
RewriteRule ^login([/]{0,1})?$ login.php [NC,L] 
RewriteRule ^search([/]{0,1})?$ search.php [NC,L] 
RewriteRule ^search/([^.]+)/?$ search.php/$1/ [NC,L] 

問題是,當我去網站/搜索/航空自衛隊正則表達式重定向我products.php文件。 我該如何解決這個問題?

+0

'[/] {0,1}'可以簡化爲'/?' – fge

+0

是的最後一個字符可以/或不是 –

回答

1

除了求助於你的正則表達式,沒有必要爲{0,1}

RewriteRule ^search/([^.]+)/?$ search.php/$1/ [NC,L] 
RewriteRule ^search(/?)?$ search.php [NC,L] 
RewriteRule ^login(/?)?$ login.php [NC,L] 
RewriteRule ^([^.]+)/([^.]+)/?$ products.php/$1/$2/ [NC,L] 
RewriteRule ^([^.]+)/?$ products.php/$1/ [NC,L] 

[/]{0,1}/?完全相同。 ?表示:「零個或前面的元素之一」。

+0

我認爲[/] {0,1}必須被添加,現在感謝你的代碼更乾淨,更理解:)。抱歉沒有投票你我需要15聲望:P。 –

+0

@AntonioPapa:謝謝你接受這個答案。你會得到15代表一些時間;-) – Cerbrus

1

你能不能只從最到最不具體更改RewriteRule的順序:

RewriteRule ^search/([^.]+)/?$ search.php/$1/ [NC,L] 
RewriteRule ^search([/]{0,1})?$ search.php [NC,L] 
RewriteRule ^login([/]{0,1})?$ login.php [NC,L] 
RewriteRule ^([^.]+)/([^.]+)/?$ products.php/$1/$2/ [NC,L] 
RewriteRule ^([^.]+)/?$ products.php/$1/ [NC,L] 
+0

謝謝你工作正常:) –