我怎麼會用一個重寫改變:的.htaccess mod_rewrite的:重寫查詢字符串到路徑
/標籤= foo的
要:
/標籤/ foo的
我嘗試:
RewriteCond %{QUERY_STRING} ^tag=(.+)$
RewriteRule ^(.*)$ http://www.example.com/tag/$1 [L]
但它沒有工作。
我怎麼會用一個重寫改變:的.htaccess mod_rewrite的:重寫查詢字符串到路徑
/標籤= foo的
要:
/標籤/ foo的
我嘗試:
RewriteCond %{QUERY_STRING} ^tag=(.+)$
RewriteRule ^(.*)$ http://www.example.com/tag/$1 [L]
但它沒有工作。
爲了避免遞歸,你應該檢查request line而不是作爲%{QUERY_STRING}
查詢字符串可能已經被其他的規則改變:
RewriteCond %{THE_REQUEST} ^GET\ /\?(([^&\s]*&)*)tag=([^&\s]+)&?([^\s]*)
RewriteRule ^(.*)$ /tag/%3?%1%4 [L,R=301]
然後你可以重寫請求返回內部沒有衝突:
RewriteRule ^tag/(.*) index.php?tag=$1 [L]
嘗試以下方法:
RewriteCond %{QUERY_STRING} ^tag=(.+)$
RewriteRule ^(.*)$ http://www.example.com/tag/%1 [L]
通常,重寫用於實現相反的效果。你確定你不想做以下事情嗎?
RewriteRule ^tag/(.+)$ index.php?tag=$1 [L]
我試圖從這樣的URL轉換:
http://java.scandilabs.com/faq?key=Contents_of__gitigno
要這樣的網址:
http://scandilabs.com/technology/knowledge/Contents_of__gitigno
上面我曾與另外一個問號在最後放棄原來的查詢字符串安德魯的回答是:
RewriteCond %{HTTP_HOST} ^java
RewriteCond %{QUERY_STRING} ^key=(.+)$
RewriteRule ^(.*)$ http://scandilabs.com/technology/knowledge/%1? [R=301,L]
注意,如果你在apache 2.4或更高版本上,你可以使用QSD標誌而不是問號。
Andrew Moore和Gumbo 謝謝,但非常感謝。 我試圖解決超過一個星期沒有成功。 Gumbo提出的解決方案解決了這個問題。 當遇到願意幫助別人的人時,我確信我們可以擁有一個更美好的世界。 對不起,但我的英語知識非常有限。 我只想感謝。 Vera – Vera 2009-08-02 16:50:59