2008-11-16 53 views
12

基本上我即將開始在網站上工作,並且希望能夠將其添加到我的.htaccess文件(或其他地方)中,該工作將像這個僞代碼一樣: (我的IP將是到位127.0.0.1的)想要重定向除我以外的所有訪問者

if (visitors_ip <> 127.0.0.1) 
    redirectmatch ^(.*)$ http://www.example.com/under-construction.html 

希望這是有道理的......

回答

20

這將是something like

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1 

RewriteCond %{REQUEST_URI} !/mypage\.html$ 

RewriteRule .* http://www.anothersite.com/mypage.html [R=302,L] 

由於Andrew指出,%{請求_ URI}條件可以避免無限循環,如果您重定向到相同的域。

由於Xorax評論almost 9 years later

你不應該使用REMOTE_HOST,它會在許多情況下會失敗。您應該使用REMOTE_ADDR
參照「difference between REMOTE_HOST and REMOTE_ADDR

+0

既然IPv6在圖片中,我發現有些情況下本地主機IP地址通過:: 1,並非總是127.0.0.1 - 不完全確定何時以及爲什麼,但是爲了處理我認爲的問題你需要一個額外的條件:`RewriteCond%{REMOTE_HOST}!^ :: 1`冒號不應該需要轉義 - 重寫引擎正則表達式不是特殊字符,我不相信。 – 2012-11-18 07:57:42

+0

你不應該使用REMOTE_HOST,它在很多情況下都會失敗。您應該使用REMOTE_ADDR。 https://stackoverflow.com/questions/3812166/difference-between-remote-host-and-remote-addr – Xorax 2017-08-24 13:38:07

+0

@Xorax謝謝。我修改了我9歲的答案。 – VonC 2017-08-24 13:40:44

0

請注意這種方法。

我已經通過採用基於IP的方法來限制訪問,然後失去IP地址的租約而被燒燬。

當然你總是可以進入有問題的盒子並再次改變.htaccess文件,但是當你試圖弄清楚發生了什麼的時候,5分鐘的恐慌並不是很有趣,如果你不期待它即將發生。

我推薦使用.htaccess(與htpasswd文件一起)來請求訪問您的開發站點的憑據。

的一個很好的例子是在這裏:http://aplawrence.com/foo-web/htaccess-authentication.html

3

這是我結束了使用,請注意,它類似於VonC的不同之處在於解決自己造成的,如果你選擇重定向到同一域無限循環。

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1 
RewriteCond %{REQUEST_URI} !/coming-soon\.html$ 
RewriteRule .* http://www.andrewgjohnson.com/coming-soon.html [R=302,L] 

還應當指出的是,302是一個臨時舉措,應該可以用來代替沒有或301

2
<IfModule mod_rewrite.c> 
RewriteEngine On 
# Redirect all except allowed IP 
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.001$ 
RewriteCond %{REMOTE_ADDR} !000\.000\.000\.002$ 
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.003$ 
RewriteRule (.*) http://YourOtherWebsite.com/$1 [R=301,L] 
</IfModule> 

之前,你的WordPress ifmodule 這將重定向大家除了在3 IP地址題。

只需ftp到該網站並編輯.htaccess文件,如果您的IP地址更改。

相關問題