2015-06-10 63 views
0

我一直在尋找這個約2小時了,並嘗試了所有的解決方案,但仍然無法弄清楚我做錯了什麼。我正在編寫api。我試圖使用「漂亮」的網址,而不是必須通過參數。重寫獲取參數與htaccess無法正常工作

當我打電話給myurl.com/categories它正確地返回整個類別列表。

當我打電話給myurl.com/categories/1,然後它會得到ID = 1的類別,它會返回一個404錯誤。

當我呼叫myurl.com/categories?id=1它成功返回id = 1的類別。

這裏是我的.htaccess

RewriteEngine On 
RewriteRule ^categories/([0-9]+)$ /categories.php?id=$1 [L,NC] 
RewriteRule ^([^\.]+)$ $1.php [L,NC] 

任何想法我做錯了嗎?

+0

驗證是否你的'.htaccess'啓用與否,通過把你的'.htaccess'的頂部相同的垃圾(隨機)文本,看看它是否產生500(內部服務器)錯誤或不當您訪問瀏覽器中的頁面? – anubhava

+0

在頂部添加隨機東西確實返回500. – Zamereon

回答

0

你的.htaccess改成這樣:

Options -MultiViews 
RewriteEngine On 

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

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^.]+)/?$ $1.php [L,NC] 
+0

嘗試過,但我得到的結果與以前相同。 – Zamereon

+0

'categories'是一個真正的目錄嗎? – anubhava

0

試試你的規則,這樣一來,使/可選的爲好。

Options -MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^categories/([0-9]+)/?$ /categories.php?id=$1 [L,NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [L,NC]