2013-11-20 69 views
1

我目前正在翻新我的網站,其中有1000頁;這需要對網址進行更改。使用htaccess將所有404錯誤重定向到不包含特定404網址的主頁?

  1. 我想301永久重定向所有404錯誤到網站主頁說www.domain.com,除了一些特定的404網址。
  2. 我想301將這些指定排除的404個URL(在1中)永久重定向到另一個URL。

我嘗試下面的代碼:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^/about-us0.html [NC] 
RewriteCond %{REQUEST_URI} !^/contact_us0.html [NC] 
RewriteRule ^(.*)$ /$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^domain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ 
RewriteRule ^about-us0\.html$ "http\:\/\/www\.domain\.com\/about\.html" [R=301,L] 

RewriteCond %{HTTP_HOST} ^domain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ 
RewriteRule ^contact-us0\.html$ "http\:\/\/www\.domain\.com\/contact\.html" [R=301,L] 

但是,當我瀏覽到www.domain.com/about-us0.html或www.domain.com/contact_us0.html;谷歌鉻說,「這個網頁有一個重定向循環」。

有什麼我做錯了嗎?任何幫助將不勝感激。


對於沒有carring查詢字符串重定向:

http://domain.com/prod/species.php?action=3&file_id=30 

http://domain.com/species-30.php 

http://domain.com/prod/species.php?action=3&file_id=101 

http://domain.com/species-101.php 

我做了這樣的事情(下面),它工作正常。這有什麼變化嗎?

RewriteCond %{QUERY_STRING} ^action=3&file_id=([0-9]+)$ [NC] 
RewriteRule ^prod/species\.php$ /species-%1.php? [R=301,L] 

回答

0

嘗試下列規則:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/(about|contact).*?\.html [NC] 
RewriteRule ^/[R=301,L] 

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ 
RewriteRule ^(contact|about)-us0\.html$ http://www.domain.com/$1.html [R=301,L,NC] 
+0

感謝您的幫助!它現在就像一個魅力! – apeee

+0

不客氣,很高興它爲你工作。 – anubhava

+0

是否有可能通過htaccess將每個以下URL重定向到特定頁面...... http://domain.com/prod/species.php http://domain.com/prod/species.php?action=3&file_id= 101 http://domain.com/prod/species.php?action = 3&file_id = 30' – apeee

相關問題