2012-12-10 173 views
2

我的網址: http://www.mywebsite.com/i/1Q2GmFuFdZ.jpghtaccess的重寫規則

我想重寫規則,使得它進入文件​​

在我的PHP文件,我有這個

<?PHP 
print_r($_GET); 
?> 

這是我在我的htaccess

RewriteEngine On 
RewriteRule ([a-zA-Z0-9]+[\.]+[a-z]{3})$ image.php?id=$1 

這是我得到的輸出:

Array ([id] => image.php) 

我不知道我在做什麼錯。我不是正則表達式專業人士,但我知道基本知識。

感謝

編輯: 忘了在表達

回答

3

mod_rewrite規則以遞歸方式應用。下面是當你要求1Q2GmFuFdZ.jpg會發生什麼:

  • 1Q2GmFuFdZ.jpg的模式相匹配,成爲​​
  • 由於文件名發生了變化,另一次迭代與重新編寫URL
  • image.php執行圖案匹配well並改寫爲image.php?id=image.php
  • 文件名或目錄沒有改變,所以不再進行迭代
  • 最終結果:image.php?id=image.php

溶液:添加此規則:

RewriteEngine On 
RewriteRule image\.php$ - [L] 
RewriteRule ([a-zA-Z0-9]+\.[a-z]{3})$ image.php?id=$1 

第二個規則用作手制動器。你也需要調整規則#3。

+0

完美運作 – Ben

1

你重寫規則是錯誤的添加0-9。它應該是這樣的:

RewriteRule ^i/(.+)$ /image.php?id=$1 [L,NC,QSA] 
+0

我認爲它仍然會產生相同的結果(雖然未驗證)。 –

+0

@SalmanA:請驗證然後:) – anubhava

+2

嗯,它實際上工作。 –