我的規則有問題;我把兩部作品都只是第一部。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]
我的規則有問題;我把兩部作品都只是第一部。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]
只有第一個工作,因爲您用來匹配的模式完全相同:^([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
。