需要用mod_rewrite重寫部分查詢字符串的幫助。用apache重寫部分查詢字符串mod_rewrite
通過大量的資源,看了看,有東西是如何工作的一般理解,但不能找出正確的解決方案
此鏈接:
http://example.com/?param=home&shop_id=1000005620&ate=bow&b_uid=-1&tg=one
有可能成爲這個
http://example.com/?param=home/#/shop/1000005620?ate=bow&b_uid=-1&tg=one
如果更短,那麼這部分查詢字符串
&shop_id=1000005620&
轉化爲/#/shop/1000005620?
UPDATE:
回答給了我一個清醒的認識了我必須做的。 是固定我的問題精確的規則是這樣的:
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^(.*)&shop_id=([0-9]{10,12})(?:&)(.*)$
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1?%1/#/shop/%2\?%3 [NE,L,R]
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^shop_id=([0-9]{10,12})$
RewriteRule ^(.*)$ https://%{SERVER_NAME}/#/shop/%1? [NE,L,R]
</IfModule>
之所以這樣做重寫規則是散列的Safari處理和IE 我有一個由外部頁面中的鏈接,也是我有,如果網站重定向到HTTPS請求http。如果鏈接中存在散列並且從Safari發送請求,或者IE散列從URL中消失,並且重定向後不再回來。我想說明一個非常重要的事實,即使在重定向到https後,Chrome瀏覽器,Firefox在保持URL哈希時也沒有問題。這涉及到重建我們的網址,但它是值得的,現在一切工作都應該如此。
關於第二個什麼** **在'&shop_id = 1000005620&'到底,如何將其替換爲**或者不匹配rewriteCond,以至於最終我會得到**?**,就像這個'/#/ shop/1000005620?'。 – Lamukra 2014-09-25 20:33:50
@Lamukra對不起,沒有看到,請參閱上面的編輯 – 2014-09-25 20:41:04
如果我只是要將'http://example.com/?shop_id = 1000005620'重寫爲'http://example.com/#/shop/1000005620'什麼是重寫規則呢? – Lamukra 2014-09-25 21:40:53