Как разрешить доступ к веб-сайту во время его разработки только IP-адресу, инструменту тестирования структурированных данных Google и службе проверки разметки W3C? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь разработать, протестировать и отладить CSS и PHP-код веб-сайта и не дать публике видеть какие-либо страницы веб-сайтов (перенаправляя их на припаркованную "страницу обслуживания" страницу), пока сайт все еще разрабатывается.Этот сайт НЕ является сайтом WordPress, поэтому проблема не решается простым применением плагина.Однако может быть решаемым с помощью .htaccess, если он настроен правильно.

Я использую следующий код в файле .htaccess в корне дерева моих сайтов:

<IfModule mod_rewrite.c>

# Allow the developer(s) (set to example.com's IP address for demonstration purposes) access to the website, via their IP address. #
RewriteCond %{REMOTE_ADDR} !^(93\.184\.216\.34)

# Allow users access to the directory containing the pages that handle HTTP error codes. #
RewriteCond %{REQUEST_URI} !^.*\/(error_documents)\/.+$ [NC]

# Allow users access to the parked "maintenance" page (duh!). #
RewriteCond %{REQUEST_URI} !^.*\/park\/index\.php$ [NC]

# During development and maintenance periods, redirect all others to the parked "maintenance" page. #
RewriteRule .* /park/index.php [R=302,L]

</IfModule>

Теперь, это прекрасно работает по назначению, но теперь у меня есть (2) новые проблемы:

Чтобы решить эти (2) проблемы, необходимо выполнить следующее:

  • Определите строку HTTP_USER_AGENT, которую вышеупомянутые (2) службы используют для доступа к веб-сайту, и, в частности, разрешают этим пользовательским агентам (т. Е. В соответствии с кодовым блоком .htaccess выше, проверьтечто запрос НЕ поступает от этих (2) служб,Если это так, убедитесь, что NOT перенаправили их на припаркованную страницу «обслуживания».

Чтобы дать вам начальную подсказку начальной точки, эта директива может выглядетьпримерно так:

RewriteCond %{HTTP_USER_AGENT} !^GoogSDTT
RewriteCond %{HTTP_USER_AGENT} !^W3CValidator

1 Ответ

0 голосов
/ 25 января 2019

Я нашел ответ на свой вопрос (с небольшим онлайн-исследованием):

С помощью этой страницы и этой страницы , whatismybrowser.com я смог придумать следующую директиву .htaccess:

<IfModule mod_rewrite.c>

# Allow the developer(s) (set to example.com's IP address for demonstration purposes) access to the website, via their IP address. #
RewriteCond %{REMOTE_ADDR} !^(93\.184\.216\.34)

# Allow access from [ Google Structured Data Testing Tool ]. #
RewriteCond %{HTTP_USER_AGENT} !^.*(Google\-Structured\-Data\-Testing\-Tool).*$ [NC]

# Allow access from [ W3C Markup Validation Service ]. #
RewriteCond %{HTTP_USER_AGENT} !^.*(W3C_Validator|Validator\.nu\/LV).*$ [NC]

# Allow access from [ W3C CSS Validation Service ]. #
RewriteCond %{HTTP_USER_AGENT} !^.*(W3C_CSS_Validator).*$ [NC]

# Allow users access to the directory containing the pages that handle HTTP error codes. #
RewriteCond %{REQUEST_URI} !^\/(error_documents)\/.*$ [NC]

# Allow users access to the parked "maintenance" page (duh!). #
RewriteCond %{REQUEST_URI} !^\/park\/index\.php$ [NC]

# During development and maintenance periods, redirect all others to the parked "maintenance" page. #
RewriteRule .* /park/index.php [R=302,L] 

</IfModule>

Пожалуйста, дайте мне знать, если я что-то пропустил, или если в моем коде есть ошибка.

С уважением,

PS: И, нет, я не беспокоюсь о том, что кто-то подделывает строку HTTP_USER_AGENT, потому что это предназначено для того, чтобы «нормальные» люди не могли просматривать сайт. Другие в конечном итоге найдут какой-нибудь способ взломать их, независимо от того, сколько превентивных мер безопасности я предпринимаю, и независимо от того, насколько я стараюсь быть активным. Мой отец всегда предупреждал меня: «Вор может украсть соль из печенья и даже не сломать корку, »И« Замки только для честных людей », поэтому я прислушался к его советам и больше не беспокоюсь о хакерах. Кроме того, даже если они ДЕЙСТВИТЕЛЬНО входят, что худшее, что может случиться? Они видят сломанный или незаконченный сайт?

...