2016-11-12 112 views
0

我與這個掙扎...... 的重寫規則是這樣的:htaccess的重寫規則問題GET

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

所以,當URL是/媒體/ viewMedia/1,回聲$ _GET [「身份證「]應該導致1,但輸出是空白的?當然,如果URL是/media/viewMedia.php?id=1,$ _GET [ 「身份證」]輸出1

+0

你完全按照你的寫法爲你改寫。我隱約記得自己有這樣的問題,我認爲這是與Apache和PHP沒有正確溝通修改後的查詢字符串有關。嘗試做$ _GET,$ _POST和$ _SERVER的轉儲,看看你是否可以發現你的id變量。如果在第二個查詢中將+)/ $替換爲+)/?$,則這兩個查詢也可以替換爲一個查詢。 – Dom

回答

0

您可以使用此規則與MultiViews關閉:

Options -MultiViews 
RewriteEngine On 

RewriteRule ^media/viewMedia/([\w-]+)/?$ /media/viewMedia.php?id=$1 [L,QSA,NC] 

選項MultiViews(見http://httpd.apache.org/docs/2.4/content-negotiation.html)被Apache's content negotiation module使用,其在mod_rewrite之前運行,並且使得Apache服務器匹配文件的擴展。所以如果/file是URL,那麼Apache將服務於/file.html

+0

@ user1388462:這個解決了嗎? – anubhava