2012-01-23 78 views
-1

我希望有人可以幫助解決異常情況。.htaccess 301重定向追加查詢到URL的末尾

我在我的httpd.conf文件中有一個主要的重寫規則,它處理我們所有的動態內容。規則是這樣的,並能正常工作:?

重寫規則^()(/ /d/[^.]*)$ /category/refine.cgi \ \ &一個\ = $ 16

我的問題是,當我嘗試使用的.htaccess創建一個簡單的301重定向,查詢參數會自動添加到URL的結束,因此最後的結果是這樣的:

http://www.example.com/category/page.html? & a =/category/subcategory/something/d/page/

請注意,查詢字符串在使用.htaccess創建301重定向時附加到URL。

我對此有個案解決方案,但每次我想要做一個簡單的301重定向時創建一個新規則是不現實的。

所以,我想知道是否可以用任何方式編輯我的「主要規則」,這樣當使用.htaccess創建重定向時,查詢參數不會附加到目標URL。

在此先感謝您提供的任何幫助。

+1

請在這裏提供完整的.htaccess。 – anubhava

+0

.htaccess僅包含簡單的301重定向。重寫發生在httpd.conf文件中,重寫規則在上面發佈。 –

+1

這就是我想知道這些規則是多麼直截了當的。請理解,301重定向可以使用mod_rewrite和mod_alias來完成。 – anubhava

回答

0

如果您有要抑制的查詢字符串值的多個簡單的重新定位你可以把所有的重定向在RewriteMap(因爲你已經用上了httpd.conf文件),並有抑制的查詢字符串如下

發生在htaccess的一個的.htaccess規則

#if there is a match in the map 
RewriteCond ${redirect_map:$1} !="" 
RewriteRule ^(.*)$ ${redirect_map:$1}? [R,L] 

地方在httpd.conf隨後靶/usr/local/apache/conf/redirect.map 鍵後跟一個空格的

RewriteEngine On 
RewriteMap redirect_map txt:/usr/local/apache/conf/redirect.map 

內容

directory/subdirectory1/subdirectory2/ example/category7/subdirectory/file.html 
directory4/subdirectory2/subdirectory9/ example/category5/subdirectory4/file332.html 
+0

謝謝你的迴應。我看了一下RewriteMap的選項。但是,我不完全確定這個解決方案是否適合我的情況。原因是,我需要重定向的URL沒有共同的「功能」給他們。所以,我想知道是否可以使用RewriteMap進行簡單的重定向,類似於在.htaccess中完成的操作。 - 實施例: /目錄/ subdirectory1/subdirectory2 /重定向到http://www.example/category7/subdirectory/file.html --- ---或 /directory4/subdirectory2/subdirectory9 /重定向到http ://www.example/category5/subdirectory4/file332.html 有意義嗎? –

+0

@KevinGleeson簡單的重定向,以及其中的很多,正是RewriteMap的優點。大多數人不使用它,因爲他們在沒有訪問httpd.conf的情況下共享主機。 –

+0

再次感謝,我認爲我們正在接近解決方案。當我完全按照上面的描述進行操作時,對於地圖中未指定的目錄,我收到服務器錯誤。對於地圖中不存在的URL,是否有可能保留原始URL結構? –

0

這就是你的規則定義它做的事:

RewriteRule ^(.)(/./d/[^.]*)$ /category/refine.cgi\?\&a\=$2 

它說創建一個URL,它看起來像: 類/ refine.cgi? & A = /富/酒吧/

如果你不希望這樣的事情發生,改變你的規則是:

RewriteRule ^(.)(/./d/[^.]*)$ /category/refine.cgi\? 
+0

感謝您的回覆鄧肯。我唯一擔心的是,規則將不會按預期執行。雖然該編輯可能會阻止查詢被追加到已在.htaccess中重定向到301的URL的末尾,但是它也可能會阻止未通過htaccess重定向的URL傳遞查詢? –

+0

聽起來像你實際上不想做301重定向然後 – duncan