2012-07-05 131 views
1

我似乎有我的htaccess代碼的一些問題,我不知道爲什麼它不工作,承認我不是專家,所以任何幫助,將不勝感激。htaccess重定向問題

什麼,我想實現的是:

www.example.com/job-search.html?jobid=12345

需要被重定向到:

www.example。 COM /職位/ 12345

htaccess的代碼,我想出到目前爲止是:

RewriteEngine ON 
RewriteRule ^/job-search.html\?jobid=(.+) /jobs/$1 [R=301,L] 

然而,這並不適合我,我不知道爲什麼,有人能幫忙嗎?

+0

當您嘗試訪問,例如什麼是發生www.example.com/job-search.html?jobid=12345 – Andrew 2012-07-05 22:34:01

+0

沒有,沒有重定向它只是給我一個錯誤404,因爲該頁面不存在 – salted 2012-07-06 00:48:27

+0

只是好奇你爲什麼想要從一個「醜陋」的版本重定向到一個「漂亮」的版本。你確定文件$ WEBROOT/jobs/12345存在嗎? – Andrew 2012-07-06 03:24:34

回答

0

有幾個問題。

  1. 如果您使用的是Apache 2.0或更高版本,則在通過重寫引擎之前,會刪除URI的前綴(前導斜槓)。所以你的正則表達式中的^/永遠不會匹配。您需要刪除前導斜槓。
  2. 你不能在RewriteRule對陣查詢字符串(?作業ID = 12345位),你必須使用對%{QUERY_STRING}變量RewriteCond和匹配,並使用反向引用。

所以,你要沿着線的東西:

RewriteEngine On 
RewriteCond %{QUERY_STRING} jobid=([^\&]+) 
RewriteRule ^job-search\.html$ /jobs/%1 [R=301,L] 
+0

隊友這個工作就像一個魅力。非常感謝你的幫助。乾杯。 – salted 2012-07-08 21:54:37