2012-12-07 54 views
1

我們最近重建了一個客戶的網站。他們發現谷歌正在列出一些舊鏈接。我們正試圖將這些鏈接重定向到主頁。.htaccess重定向301不能與參數一起工作

http://www.joiningtech.com/index.html?GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA http://www.joiningtech.com/index.html?GAW+CAM2 &的gclid = CMncjs-ehLQCFdKd4Aod52AAAQ

我曾嘗試幾種方式來獲得這兩個重定向到使用正常工作。 htaccess文件。

方法#1

redirect 301 http://www.joiningtech.com/index.html?GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA http://www.joiningtech.com/ 
redirect 301 http://www.joiningtech.com/index.html?GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ http://www.joiningtech.com/ 

方法2

RewriteCond %{QUERY_STRING} ^([^&]&)*GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA(&|$) 
RewriteRule ^/index\.php$ http://www.joiningtech.com/? [L,R=301] 
RewriteCond %{QUERY_STRING} ^([^&]&)*GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ(&|$) 
RewriteRule ^/index\.php$ http://www.joiningtech.com/? [L,R=301] 

我發現在計算器等地這些方法。我想知道我是否得到了錯誤,並希望得到任何幫助!

謝謝,克里斯

+0

愚蠢的問題,但你確保重寫啓用? – Scott

回答

0

OK,感謝卡米爾的幫助和一些試驗和錯誤,我找到了答案。這個網站是一個WordPress站點。 .htaccess文件有順序如下:

# suExec for PHP 
Action application/x-pair-sphp /cgi-bin/php5.cgi 
AddType application/x-pair-sphp .php 
#Video MIME Types: 
AddType video/m4v .m4v 
AddType video/ogg .ogv 
AddType video/mp4 .mp4 
AddType video/webm .webm 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /directory/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
# END WordPress 

</IfModule> 
redirect 301 /pages/laser.html http://www.joiningtech.com/pages/welding.html 
redirect 301 /index_nosound.html http://www.joiningtech.com/ 
RewriteEngine On 
RewriteCond %{REQUEST_URI} =/index.html [NC] 
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA [OR] 
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ 
RewriteRule .* http://www.joiningtech.com/? [L,R=301] 

我猜測,WordPress的重寫代碼和後期代碼是矛盾的。所以我重新將WordPress重寫代碼重新排列在新的重定向之下。

# suExec for PHP 
Action application/x-pair-sphp /cgi-bin/php5.cgi 
AddType application/x-pair-sphp .php 
#Video MIME Types: 
AddType video/m4v .m4v 
AddType video/ogg .ogv 
AddType video/mp4 .mp4 
AddType video/webm .webm 

</IfModule> 
redirect 301 /pages/laser.html http://www.joiningtech.com/pages/welding.html 
redirect 301 /index_nosound.html http://www.joiningtech.com/ 
RewriteEngine On 
RewriteCond %{REQUEST_URI} =/index.html [NC] 
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA [OR] 
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ 
RewriteRule .* http://www.joiningtech.com/? [L,R=301] 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /directory/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
# END WordPress 

現在可以使用了。我仍然需要知道是否有兩個「RewriteEngine On」的實例。

+0

你只需要一個'RewriteEngine On' ...第二個是無用的,但不是錯誤 –

1

使用詞典編纂特點比較,它比正則表達式更清晰,當你不需要他們。

RewriteEngine On 
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA [OR] 
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ 
RewriteRule ^index.html$ http://www.joiningtech.com/? [L,R=301] 

你(使用Redirect)第一種方法,你指定全URL作爲第一個參數不工作,但預計只有路徑URL的一部分。下面的工作還有:

redirect 301 /index.html?GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA http://www.joiningtech.com/ 
redirect 301 /index.html?GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ http://www.joiningtech.com/ 

第三種方式瞭如何使用mod_rewrite做到這一點是:

RewriteEngine On 
RewriteCond %{REQUEST_URI} =/index.html [NC] 
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA [OR] 
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ 
RewriteRule .* http://www.joiningtech.com/? [L,R=301] 
+0

感謝卡米爾。不幸的是,這些都解決了這個問題。我忘了在我的原始問題中包含第二個選項,因爲我也嘗試過。我用你的第一個方法使用字典對比。不幸的是,鏈接並沒有剝奪論點,所以鏈接仍然在尋找GAW + ...你還有其他建議嗎? – ChrisB

+0

@ChrisB你是什麼意思與「鏈接不剝奪論點」?您也可以嘗試第三種方法(請參閱更新後的答案),但我沒有看到爲什麼第一和第二種解決方案都不能同時工作...... –

+0

非常感謝@Kamil。這第三種方法仍然不起作用。這很奇怪。我所說的「鏈接不是剝奪論點」的意思是,當我嘗試去鏈接:http://www.joiningtech.com/index.html?GAW+CAM2&gclid=CNb006iehLQCFQWe4AodejAAkA而不是解決只是www.joiningtech它仍然顯示整個URL,因此在.com /之後不會去除所有其他字符。 – ChrisB