2012-07-25 30 views
-1

我有以下的代碼,htaccess的指揮錯誤

details.php工作的罰款。但是當我訪問gotolink.php其再次指揮我在details.php網頁,其中給我404錯誤辯論,因爲它的意外網址..

RewriteEngine On 

RewriteRule ^([a-zA-Z0-9-/]+)$ uk/details.php?pid=$1 
RewriteRule ^([a-zA-Z0-9-/]+)/$ uk/details.php?pid=$1 

RewriteRule ^([a-zA-Z0-9-/]+)$ gotolink/gotolink.php?id=$1 
RewriteRule ^([a-zA-Z0-9-/]+)/$ gotolink/gotolink.php?id=$1 

請幫幫忙!

回答

2

的正則表達式details.phpgotolink.php是相同的,阿帕奇沒有辦法告訴http://domain.com/abc123是否應重寫到/uk/details.php?pid=abc123/gotolink/gotolink.php?id=abc123因爲URI,/abc123,符合這兩個:

RewriteRule ^([a-zA-Z0-9-/]+)$ uk/details.php?pid=$1 

RewriteRule ^([a-zA-Z0-9-/]+)$ gotolink/gotolink.php?id=$1 

的事實details.php一個是第一個也是爲什麼一切重新獲得寫到details.php。如果你換了它們,一切都會被重寫爲gotolink.php。你必須這樣做,所以這些正則表達式匹配不同。例如:

RewriteRule ^d/([a-zA-Z0-9-/]+)$ uk/details.php?pid=$1 

RewriteRule ^g/([a-zA-Z0-9-/]+)$ gotolink/gotolink.php?id=$1 

所以現在/d/abc123/uk/details.php?pid=abc123/g/abc123/gotolink/gotolink.php?id=abc123。或者你可以分開他們,如果細節pid總是字母和gotolink id始終是數字或東西:

RewriteRule ^([a-zA-Z-/]+)$ uk/details.php?pid=$1 

RewriteRule ^([0-9-/]+)$ gotolink/gotolink.php?id=$1 
2

重寫條件是相同的,所以第一個將捕獲的所有請求,並不會繼續gotolink.php

+0

那麼是什麼解決方案? – Fou 2012-07-25 19:10:26

+1

你想做什麼? – 2012-07-25 19:13:21