मैं अपनी साइट को केवल निम्नलिखित के साथ उपयोगकर्ता एजेंटों को मेरी साइट पर हिट करने में सक्षम होने की अनुमति देने के लिए सीमित करने की कोशिश कर रहा हूं:

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

वर्तमान में मेरी .htaccess फ़ाइल (/var/www/html/) में मेरे पास निम्नलिखित हैं:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko [NC]
RewriteRule ^ - [F,L]
1
WeAreOne 11 सितंबर 2020, 01:38

1 उत्तर

सबसे बढ़िया उत्तर

आमतौर पर, CondPattern (RewriteCond निर्देश का दूसरा तर्क) एक नियमित अभिव्यक्ति है। तो, आपको इसे एक रेगेक्स में बदलने की आवश्यकता होगी - विशेष रूप से, आपको बैकस्लैश-शाब्दिक बिंदुओं और रिक्त स्थान से बचने की आवश्यकता होगी। हालांकि, इसके बजाय लेक्सिकोग्राफिकल इक्वलिटी ऑपरेटर का उपयोग करना आसान होगा, अर्थात। = उपसर्ग। यह तब एक शाब्दिक स्ट्रिंग से मेल खाता है, रेगेक्स नहीं।

उपयोगकर्ता-एजेंट स्ट्रिंग में स्पेस एक विशेष मामला है क्योंकि स्पेस Apache कॉन्फ़िगरेशन फ़ाइलों में एक तर्क विभाजक है। इन्हें या तो बैकस्लैश से बचने की आवश्यकता है (या रेगेक्स का उपयोग करते हुए \s शॉर्टहैंड कैरेक्टर क्लास का उपयोग करें), या पूरे तर्क को दोहरे उद्धरण चिह्नों में संलग्न करें।

इसके बजाय निम्न का प्रयास करें:

RewriteCond %{HTTP_USER_AGENT} "!=Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
RewriteRule ^ - [F]

F ध्वज के साथ L ध्वज की आवश्यकता नहीं है - यह निहित है। यदि आप विशेष रूप से केवल उस एक उपयोगकर्ता-एजेंट को अनुमति देना चाहते हैं तो आपको शर्त पर NC ध्वज की आवश्यकता नहीं है।

0
MrWhite 11 सितंबर 2020, 14:38