2010-02-17 52 views
1

我試圖將我的網站上的重定向從基於類別的URL硬編碼到固定的URL。如何從apache 301重定向中刪除URL參數?

的URL結構是:

http://www.mysite.com/my-category-c-17_12.html 

而且我想重定向到:

http://www.mysite.com/my-static-category.php 

使用下面的重定向在我的.htaccess文件:

Redirect 301 /my-category-c-17_12.html http://www.mysite.com/my-static-category.php 

我結束了:

http://www.mysite.com/my-static-category.php?cpath=17_12 

下面我重定向,我也有以下行:

RewriteRule ^(.*)-c-([0-9_]+).html$ index.php?cPath=$2&%{QUERY_STRING} 

我不知道這是什麼原因造成這一點。基本上我想要一種從重定向的URL中去除參數的方法。有誰知道如何處理?謝謝!

回答

0

如果你不想全局重寫(按照伊格納西奧巴斯克斯 - 艾布拉姆斯的建議).. 而不是使用重定向指令,只需用重寫規則。喜歡的東西(全稱):

RewriteEngine on 

# Limited redirects 
RewriteCond %{REQUEST_FILENAME} my-category-c-17_12.html$ [OR,NC] 
RewriteCond %{REQUEST_FILENAME} my-category-c-17_13.html$ [OR,NC] 
RewriteCond %{REQUEST_FILENAME} my-category-c-17_14.html$ 
RewriteRule ^(.*)-c-([0-9_]+).html$ $1.php [R=301,L] 

# Other rewrites 
RewriteRule ^(.*)-c-([0-9_]+).html$ index.php?cPath=$2 [QSA,L] 

然後,您可以爲其他URL添加到的RewriteCond讓更多的URL重定向。

+0

工作就像一個魅力。謝謝。 – user77413 2010-02-17 19:54:55

+0

不客氣。樂意效勞 – Cez 2010-02-17 20:47:57

1

如果您已經有mod_rewrite那麼爲什麼不使用它?

RewriteRule ^(.*)-c-([0-9_]+).html$ $1.php [R=301,L] 
+0

我只想重寫特定的URL而不是所有的URL,所以我不想改變網站其他部分的行爲。而這需要成爲一個301,因爲我只是想保持舊的聯繫。 – user77413 2010-02-17 05:08:28