2014-10-19 76 views
1

如果有人請求一個頁面,這並不存在,例如,如果其.htaccess的404 - 改

site.com/blabla/?search=blabla 

使用此htacess

ErrorDocument 404/

他們被重定向具有相同的URL的網頁, site.com/blabla/?search=blabla 我想要做的是將它們重定向到一個IP,而不是主頁。試過這個;

ErrorDocument 404 http://64.233.185.94/ 

但它只是重定向到http://64.233.185.94/ 我想將它與沒有找到URL重定向,所以應該在這一點上重定向到

http://64.233.185.94/blabla/?search=blabla 

這樣做的正確方法是什麼?

回答

1

您將需要使用mod_rewrite規則,而不是ErrorDocument爲:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !=64.233.185.94 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)$ http://64.233.185.94/$1 [L,R] 
+0

你試過了嗎?它使無限重定向循環 – user198989 2014-10-19 12:48:23

+1

只有當64.233.185.94是與重定向相同的主機的IP時,它纔會導致無限循環。那確實是這樣嗎? – anubhava 2014-10-19 12:49:55

+1

查看更新的規則以避免現在重定向循環。 – anubhava 2014-10-19 12:54:27

1

您可以使用mod_rewrite做到這一點。隨着mod_rewrite的,你可以測試是否一個請求的文件或目錄是否存在,如果不存在,你可以做一個外部重定向:在測試此按預期工作後

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILNEMAE} !-d 
RewriteRule^http://64.233.185.94%{REQUEST_URI} [R,L] 

更改R標誌R=301

+0

R和R = 301的區別是什麼,它很重要嗎?或者它只是用於搜索引擎? – user198989 2014-10-19 12:32:11

+1

@ user198989 http://devdocs.io/http/rfc2616-sec10#sec10.3.2 – hjpotter92 2014-10-19 12:53:10

+0

301重定向與hjpotter鏈接是永久性的。通過使用永久重定向,客戶端可以預期重定向永不改變,這意味着他們可以(永久)緩存第二個url,並在第一個url的後續請求中加載第二個url。對於搜索引擎,這將防止對重複內容進行處罰。 – Sumurai8 2014-10-20 11:09:39