2011-12-31 45 views
9

我希望我的訪問者只能訪問我的網站(博客)的特定部分。如果他們嘗試訪問網站的其他區域,我希望他們重定向到博客部分。.htaccess mod_rewrite基於IP的重定向:如何將所有流量重定向到特定的子目錄,但我的IP除外?

我也希望這適用於除我的IP地址以外的所有人。

所以結構如下:

mysite.com/blog // visitor access allowed

mysite.com  // redirect to mysite.com/blog 

mysite.com/forum // redirect to mysite.com/blog 

mysite.com/tools // redirect to mysite.com/blog 

etc... 

你對如何通過的.htaccess mod_rewrite的做到這一點建議嗎?

回答

18

你應該可以用下面的重定向:

RewriteCond %{REMOTE_HOST} !^123\.456\.789 
RewriteCond %{REQUEST_URI} !^/blog/? 
RewriteCond %{REQUEST_URI} /(.*)$ 
RewriteRule (.*) /blog [R=301,L] 
+0

thanks @jordon - 如果我想添加多個IP地址,語法是什麼? – pepe 2011-12-31 20:58:10

+5

@torr只需將第一行復制到另一行並繼續添加即可。 – 2011-12-31 21:07:48

+0

我認爲REMOTE_ADDR比REMOTE_HOST更可取得IP地址。如果啓用了'HostnameLookups',REMOTE_HOST不一定會返回IP地址(儘管默認情況下它是關閉的)。 – MrWhite 2014-07-14 09:37:31

3

你應該創建處理特定的重定向頁面,然後編輯您的htaccess文件是這樣的:

Options +FollowSymlinks 
RewriteEngine on 
#not your IP 
RewriteCond %{REMOTE_HOST} !^123\.123\.123\.123 
#make sure the rule allows everyone to access the redirect page 
RewriteCond %{REQUEST_URI} !/redirect_page\.html$ 
#Send them to the redirect page 
RewriteRule \.html$ /redirect_page.html [R=302,L] 

rediret_page.html可以使用js或服務器端重定向來處理它們最終的位置,但它會強制每個沒有通過處理重定向的特定頁面訪問IP地址的人。

+0

澄清,我不希望我的用戶重定向頁面 - 我希望他們去我的博客(wordpress),通常顯示,如果我手動指向瀏覽器mysite.com /博客的頭版 - 做你的代碼提供了這個? – pepe 2011-12-31 21:22:26

+0

@torr:你所需要做的就是製作重定向頁面/博客。我可能會建議通過PHP重定向頁面,因爲它會給你更好的控制,但它應該只使用/博客 – 2011-12-31 22:06:42

相關問題