2015-10-05 86 views
1

所以這其中有我難倒...解析URL變量的htaccess編輯

我有我的htaccess的設置,以便當一個名稱的用戶類型(因爲它是正確的),它的瀏覽器重定向到正確的後文件(即http://localhost/mgo/barbis)這工作正常。當我在URL中使用變量時(即http://localhost/mgo/barbis?page=menu&temp=1,由於我是如何解析數據,它仍然正常工作,但是當我想將$_GET變量拉出字符串時,它不起作用)

I試圖var_dump($_GET),它讓我發現,現有的唯一變量是[id]=>barbis

我知道一個可行的解決方案是經過「?」(SERVER_URI, substr, strpos, etc)捕捉到的數據和爆炸中的數組,但我很好奇,如果這只是一個簡單的東西,我錯過了。

我不知道它是否重要,但對於好的措施,這裏是我的htaccess佈局。

RewriteEngine On 
RewriteBase /mgo/modules/menu/index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9]+)$ index.php?id=$1 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?id=$1 

<filesMatch "\.(html|htm|js|css)$"> 
FileETag None 
<ifModule mod_headers.c> 
Header unset ETag 
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
Header set Pragma "no-cache" 
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
</ifModule> 
</filesMatch> 

ErrorDocument 404 /mgo/404.php 

任何反饋將不勝感激。謝謝!

回答

1

用途:

RewriteEngine On 
RewriteBase /mgo/modules/menu/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?id=$1 [QSA,L] 

使用[QSA]:當更換URI包含查詢字符串,重寫規則的默認行爲是放棄現有的查詢字符串,並與新生成的更換。使用[QSA]標誌會導致查詢字符串被合併。

而且用或/?工作,而最終/

+1

驚人的 - 謝謝!我認爲這很愚蠢,那是完美的解決方案。再次感謝! – b3tac0d3

+0

不客氣,很高興它解決了。 – Croises