2012-07-25 6 views
17
का उपयोग कर

वर्तमान में मैं का उपयोग कर आईपी 12.345.678.90 को छोड़कर सभी उपयोगकर्ताओं पुनः निर्देशित कर रहा हूँ आईपी की एक सीमा रीडायरेक्ट करें:RewriteCond

RewriteEngine On 
RewriteCond %{REQUEST_URI} !/maintenance$ 
RewriteCond %{REMOTE_HOST} !^12\.345\.678\.90 
RewriteRule $ /maintenance [R=302,L] 

क्या वाक्य रचना मैं एक सीमा अनुमति देने के लिए प्रयोग करेंगे? मेरी सूची में अनुमति दें मेरे पास है:

Allow from 123.45.678.90/28 

यह काम होगा अगर मैं सिर्फ करने के लिए REMOTE_HOST लाइन अद्यतन:

RewriteCond %{REMOTE_HOST} !^12\.345\.678\.90/28 

उत्तर

19

आप शायद %{REMOTE_ADDR} के खिलाफ मैच के लिए चाहते हैं, लेकिन आप CIDR संकेतन उपयोग नहीं कर सकते क्योंकि %{REMOTE_ADDR}सचमुच रिमोट पता है और आप इसके खिलाफ मिलान करने का प्रयास करने के लिए नियमित अभिव्यक्ति का उपयोग कर सकते हैं। - तो 123.45.67.89/28 के लिए, (123.45.67.80 123.45.67.95), तो आप इस तरह कुछ करने के लिए चाहते हैं: आप अपाचे HTTPD 2.4 या बाद उपयोग कर रहे हैं

RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.8[0-9]$ 
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.9[0-5]$ 
12

, आप expressions उपयोग कर सकते हैं एक सीआईडीआर मास्क के खिलाफ REMOTE_ADDR से मिलान करने के लिए।

संक्षिप्त रूप इस तरह दिखता है:

RewriteCond expr "-R '192.168.1.0/24'" 

निम्नलिखित अब प्रपत्र भी उपलब्ध है, लेकिन प्रलेखन यह कम कुशल है पता चलता है:

RewriteCond expr "%{REMOTE_ADDR} -ipmatch '192.168.1.0/24'" 

अपने उदाहरण के लिए पूर्ण समाधान बनाता है यही कारण है कि इस तरह कुछ:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !/maintenance$ 
RewriteCond expr "! -R '12.345.678.90/28'" 
RewriteRule $ /maintenance [R=302,L] 
+0

प्रश्न: क्या आप संक्षिप्त रूप में उदाहरण दे सकते हैं? यह अस्पष्ट है कि यह '% {REMOTE_ADDR}' का संदर्भ कैसे देता है, जबकि '% {REMOTE_ADDR}' स्पष्ट रूप से लंबे प्रारूप में नोट किया गया है। – plusjeff

+0

@plusjeff मुझे यकीन नहीं है कि आपका क्या मतलब है - संक्षिप्त रूप का उदाहरण ऊपर शामिल है। लिंक किए गए दस्तावेज़ों से, -R 'वही है'% {REMOTE_ADDR} -ipmatch ... ", लेकिन अधिक कुशल'। – zts

+0

'% {REMOTE_ADDR}' के संक्षिप्त रूप प्रतिनिधि में '-R' है? यदि हां, तो एक अलग चर की जांच के लिए उच्च प्रदर्शन शॉर्ट फॉर्म का उपयोग कैसे करता है (यानी मैं छोटा फॉर्म के साथ '% {CLIENT_IP}' नामक चर को देखना चाहता हूं? यदि मैं एक अलग चर का उपयोग करता हूं, तो क्या मुझे हमेशा लंबे फॉर्म का उपयोग करें? – plusjeff

0

मुझे निम्नलिखित का उपयोग करना पसंद है आंशिक पता मिलान की अनुमति देता है। आपकी virtualHost/htaccess फ़ाइल

SetEnvIf HOST "siteYouAreworkingON.com" ACCESS_CONTROL<br> 
SetEnvIf Remote_Addr "list of full or partia ipadresses separated by |"<br> 
RewriteCond %{ENV:ACCESS_CONTROL} 1<br> 
RewriteRule .* http://gohere.instead [L,R] 

आशा है कि इससे मदद मिलती है।

संबंधित मुद्दे