2012-03-05 118 views
1

我想用.htaccess重寫一個url,並對它進行301重定向。.htaccess rewrite url [apache]

原始URL是這樣的http://本地主機/實驗室/ customer_132 /昆德=哥德堡-STAD

我希望它看起來像這樣,重定向到

HTTP: // localhost/labs/customer_132 /?page_id = 11#goteborg-stad

試過不同的解決方案,但我沒有得到它的竅門。

謝謝你的一切幫助!

+0

'page_id = 11'甚至沒有在您的原始URI? – anubhava 2012-03-05 17:06:09

+0

是的,我知道什麼字符串的最後部分「保持」,並改變了那部分behinde。它的ajax頁面隨着WordPress的變化。 – 2012-03-06 15:59:27

回答

1

您無法直接使用RewriteRule stament訪問查詢字符串;相反,您需要一個前面的RewriteCond,檢查是否存在kund字段並獲取其值。然後,您可以在RewriteRule中使用%N來使用任何捕獲的值。

RewriteEngine On 

RewriteCond %{QUERY_STRING} kund=([\w\-]+) 
RewriteRule ^/labs/customer_132/ /labs/customer_132/?page_id=11#%1 [NC,R,L] 
+0

謝謝鮑羅廷,會試試!回來,如果它不工作:) – 2012-03-06 15:58:15

-1

您需要在.htaccess文件打開重寫引擎:

RewriteEngine On 

然後,對於單個URL重定向以下應該工作(如果.htaccess文件是在根文件夾或服務器)。

編輯:如果查詢字符串正好是kund=goteborg-stad(大寫或小寫),您需要檢查查詢字符串的條件。

RewriteCond %{QUERY_STRING} ^kund=goteborg-stad$ [NC] 
RewriteRule ^labs\/customer_132\/$ /labs/customer_132/?page_id=11#goteborg-stad [NE,R,L] 

NE告訴Apache不要逃避在重定向的#符號。

如果你想重定向選擇不同的URL(例如,客戶ID會改變嗎?),那麼你需要澄清。

+0

-1:一個'RewriteRule'就像*從不匹配,因爲查詢字符串在'RewriteRule'看到之前從URL中移除。 – Borodin 2012-03-05 17:23:36

+0

對不起,我是愚蠢的。使用%{QUERY_STRING}查看查詢。然後像往常一樣重定向,但要確保包含'[NE]',這樣哈希不會編碼爲'%23',就像在你的答案中一樣。 我還沒有使用'kund'查詢作爲片段,因爲它不清楚這是否需要,因爲它們仍然會重定向到相同的'page_id'。 – Jack 2012-03-05 17:49:35