我想要一個htaccess重寫規則來抓取主機名之後的所有內容並將其用作參數。例如,我想http://example.com/one由http://example.com/category.php?cat=onehtaccess rewriterule抓取過去主機名的所有內容
處理我認爲它應該很簡單,但我不能完全找到組合。 感謝
我想要一個htaccess重寫規則來抓取主機名之後的所有內容並將其用作參數。例如,我想http://example.com/one由http://example.com/category.php?cat=onehtaccess rewriterule抓取過去主機名的所有內容
處理我認爲它應該很簡單,但我不能完全找到組合。 感謝
這是我想出了:
RewriteRule ^/?([^\./]*)[:;,\.]*$ category.php?cat=$1 [L,NS]
任何人看到任何方式來改善呢?
嘗試這樣:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ category.php?cat=$0 [B]
如果你想通過查詢字符串一起過,務必將B
標誌更改爲B,QSA
,但要知道,有人可以再通過GET參數cat
,這將覆蓋你在重寫中設置的內容。如果你需要它們,有一些解決方法可以解決這個問題,但是否則應該爲你做。
謝謝蒂姆。我找不到任何地方記錄的[B]標誌。你能解釋一下嗎?或者指給我一些關於它的信息? – Eric 2010-07-14 13:48:26
噢,我實際上認爲這只是2.0文檔中的一個疏漏,但是直到Apache 2.2才能看到源代碼,所以如果您的網站是2.0版本,請不要使用它。無論如何,它避免了反向引用,所以如果出於任何原因你有'example.com/this&that',你不會得到'cat = this'和'that ='重寫,因爲&符號將被編碼。 – 2010-07-14 14:14:56