2013-03-20 148 views
0

我的規則有問題;我把兩部作品都只是第一部。Double RewriteRule with htaccess

我有2個不同信息的文件。

RewriteRule ^([A-Za-z0-9-]+)/?$ tour.php?tour=$1 [NC,L] 
RewriteRule ^([A-Za-z0-9-]+)/?$ programa.php?programa=$1 [NC,L] 

回答

0

只有第一個工作,因爲您用來匹配的模式完全相同:^([A-Za-z0-9-]+)/?$。您需要其他東西來分開tour.php以及programa.php。現在,如果有人在其瀏覽器的URL地址欄中輸入http://youdomain.com/abcdefg/,則會將URI /abcdefg/發送到您的服務器。第一條規則:

RewriteRule ^([A-Za-z0-9-]+)/?$ tour.php?tour=$1 [NC,L] 

比賽,因爲/abcdefg/匹配您的模式^([A-Za-z0-9-]+)/?$連帶改寫爲/tour.php?tour=abcdefg。如果這是爲了programa.php?第二條規則永遠不會達到,因爲所有內容都被第一條規則的模式捕獲。你需要添加其他的東西來區分兩者。例如,添加一個額外的路徑注:

RewriteRule ^tour/([A-Za-z0-9-]+)/?$ tour.php?tour=$1 [NC,L] 
RewriteRule ^programa/([A-Za-z0-9-]+)/?$ programa.php?programa=$1 [NC,L] 

這意味着如果我去http://youdomain.com/programa/abcdefg/,我的請求被改寫爲/programa.php?programa=abcdefg,如果我去http://youdomain.com/tour/abcdefg/,我的請求被改寫爲/tour.php?tour=abcdefg