2011-05-16 166 views
0

這是我的.htaccess文件的內容:重寫規則不工作

RewriteEngine on 
RewriteRule ^upload$ upload.php 
RewriteRule ^/(\d+)/?.*$ /view.php?id=$1 [L] 

第一條規則成功的作品。當我導航到http://localhost/upload時,它顯示了upload.php頁面。

然而,第二條規則並沒有。當我瀏覽到:http://localhost/1234/some-string我收到404錯誤。它意在顯示此頁面:http://localhost/view.php?id=1234

希望你能看到我想要做的規則,我希望網址末尾的最後一個字符串被完全忽略,並將1234作爲view.php的參數。

任何人都可以知道爲什麼這不起作用嗎?我嘗試了所有我能想到的,但沒有成功。謝謝!

回答

1

它將試圖找到目錄/1234/並失敗。改變/-,它應該工作

編輯:得到了完全錯誤的......它實際上是你有一個/在你的模式的開頭,而mod_rewrite的不接收第一個斜槓的路徑。

+0

編輯:對不起,錯了。你是對的。如果我這樣做,它會起作用:'RewriteRule ^(\ d +)/?.*$ /view.php?id=$1 [L]'。不過,不知道'-'的意思。 – Josh 2011-05-16 18:45:16

+0

這是因爲它首先查找目錄,我不知道如何阻止它這樣做。第一個作品是因爲url沒有以'/'結尾(在這種情況下它也不起作用,因爲規則沒有指定可能性。 – fbstj 2011-05-16 18:48:00