2009-02-20 50 views
3

我試圖讓Apache將重定向/a.php?a=123/B/123(其中123可以是任何數字1和9999),但似乎無法得到它的工作。重寫規則 - a.php只會A = 123/B/123

這是我在htaccess的:

RewriteEngine on 

RewriteRule ^a.php?a=([0-9]+) /b/$1 [L] 
RewriteRule ^a.php$ /c/ [L] 

有了這個打算a.php只會A = 123個結果404,但要僅僅a.php只會按預期工作? 我試過逃避? (RewriteRule^a.php \?a =([0-9] +)/ b/$ 1 [L])但它仍然不起作用。

我在做什麼錯誤?

回答

7

查詢字符串不是在RewriteRule指令中測試的URI路徑的一部分。

RewriteCond %{QUERY_STRING} ^a=([0-9]+)$ 
RewriteRule ^a\.php$ /b/%1? [L,R] 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^a\.php$ /c/ [L,R] 

但是如果你想用另一種方式(的/b/123請求重定向到/a.php?a=123):

RewriteRule ^b/([0-9]+)$ a.php?a=$1 [L] 
+0

謝謝你這看起來像它應該工作這隻能用RewriteCond指令測試,但現在當我去「a.php?a = 123」或者只是「a.php」時,都會將我重定向到/ c/ – Tim 2009-02-20 10:52:57