новичку htaccess нужны Ваше мнение и элитные навыки :)

Вот обязательная ссылка на ITAPPMONROBOT.

3
задан 23 June 2010 в 23:39
6 ответов

В первую очередь, Ваш синтаксис является неправильным.

.htaccess файлам не нужны угловые скобки (" <>") вокруг директив; они необходимы только, когда Вы создаете подразделы и указываете настройки на раздел, как в

<Directory /some/dir>
    allow from all
</Directory>

Кроме того, это избыточно для утверждения "RewriteEngine на" так много раз; каждый будет достаточен (если Вы не будете использовать его в подразделе).

Наконец, что не менее важно, Ваша директива "порядка" говорит Apache, которые "позволяют" директивы, должен иметь приоритет, "отклоняют", таким образом, Вы эффективно предоставляете доступ к своему сайту отовсюду, потому что Ваш "отклонять" директивы даже не обрабатываются после "позволяют от всех", умирает.

Это должно работать лучше:

AddHandler server-parsed .htm   
AddHandler server-parsed .html
Addhandler application/x-httpd-php .html .php

order deny,allow
deny from *.ru
deny from tamanria.com
allow from all

RewriteEngine on    

RewriteCond %{HTTP_REFERER} !^$    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ceplocal2003.org(/)?.*$     [NC]    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yellowpages.ca(/)?.*$     [NC]    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?cep.ca(/)?.*$     [NC]    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?goldbook.ca(/)?.*$     [NC]    
RewriteRule .*\.(gif|jpg|jpeg|bmp|png|pdf)$ http://www.ceplocal2003.org/images/Refererblock.gef [R,NC]

RewriteCond %{HTTP_REFERER} .ru [NC,OR]    
RewriteCond %{HTTP_REFERER} refblock\.com    
RewriteRule .* - [F]

RewriteCond %{HTTP_REFERER} tamanria.com [NC,OR]    
RewriteCond %{HTTP_REFERER} refblock\.com    
RewriteRule .* - [F]

ErrorDocument 404 /Custom404.html
2
ответ дан 3 December 2019 в 07:16
deny from *.ru
deny from tamanria.com

Это вызовет поиск DNS для КАЖДОГО запроса, идущего в Ваш сайт. Поскольку у Вас также есть блокирование ссылающегося домена, настроенное ниже, я предполагаю, что Вы пытались заблокировать содержание, которое было hotlinked от Вашего сайта. Если так, эти правила не работали бы для предотвращения этого.

Так как Вы просто пытаетесь заблокировать сайты, которые являются использованием горячих ссылок, можно поместить или правила, которые устанавливают сайты, которые Вы хотите разрешить, или, отклонить тех, которые были использованием горячих ссылок. Я предпочитаю предотвращать проблему вместо того, чтобы видеть скачок в пропускной способности, затем отчаянно пытаясь выяснить, какой сайт имеет hotlinked содержание.

Я думал бы как минимум, следующее сделает

AddHandler server-parsed .htm
AddHandler server-parsed .html
Addhandler application/x-httpd-php .html .php

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} ~Refererblock.gef$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.*@)?([a-z0-9-]+\.)*(yellowpages\.ca|cep\.ca|goldbook\.ca)(:[0-9
]+)?(/.*)?$ [NC]
RewriteRule .*.(asf|mpg|mpeg|wmv|avi|rm|gif|jpeg|jpg|zip)$ http://www.ceplocal2003.org/images/Refererblock.gef [NC,F,L]
0
ответ дан 3 December 2019 в 07:16

В то время как Massimo только что исправил форматирование Wiki, в коде существуют все еще ошибки.

RewriteCond %{HTTP_REFERER} .ru [NC,OR]

заблокирует что-либо, что содержит somecharacter (рутений) в строке.

таким образом любой URL, который содержит aru, был бы уменьшен. Более строгий ruleset должен использоваться для этого.

RewriteRule .* - [F]> 

вызовет ошибку 500, поскольку это - недопустимая строка. удаление> зафиксировало бы это.

В то время как у меня было больше чем 50 представителей ранее, я имею 1 теперь, таким образом, я не могу прокомментировать Ваш ответ. Объедините ответ в комментарий.Спасибо.

0
ответ дан 3 December 2019 в 07:16

Спасибо user46528 и Massimo, надо надеяться, я не скучал ни по кому. Я не уверен, как объединить мой ответ в комментарий хотя :( Для .ru я пробовал к на самом деле блоку любое расширение домена в .ru от соединения. Я нашел много .ru противных небольших сайтов, связывающихся по некоторым причинам.

<Код был добавлен по ошибке в здесь, когда я выяснял, как отформатировать запрос справочной информации правильно :)

Таким образом, я вижу объединяющуюся часть, но я вижу два различных типов, делает она имеет значение, какой путь Вы пишете этому, оба упомянутые ниже.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} ~Refererblock.gef$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.*@)?([a-z0-9-]+\.)*(yellowpages\.ca|cep\.ca|goldbook\.ca)(:[0-9
]+)?(/.*)?$ [NC]
RewriteRule .*.(asf|mpg|mpeg|wmv|avi|rm|gif|jpeg|jpg|zip)$ http://www.ceplocal2003.org/images/Refererblock.gef [NC,F,L]

ИЛИ

RewriteCond %{HTTP_REFERER} !^$    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ceplocal2003.org(/)?.*$     [NC]    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yellowpages.ca(/)?.*$     [NC]    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?cep.ca(/)?.*$     [NC]    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?goldbook.ca(/)?.*$     [NC]    
RewriteRule .*\.(gif|jpg|jpeg|bmp|png|pdf)$ http://www.ceplocal2003.org/images/Refererblock.gef [R,NC]>    

Если бы я должен был предположить, что сказал бы, что оба в порядке, но первый является более чистым взглядом.

Второй я нечеток на том, было ли у меня позволение, отклоните просто назад или если я избавиться от него в целом, я не хочу создавать поиск DNS так очень.

Этот ceplocal2003 является веб-сайтом работы, который я поддерживаю и недавно проверяя мою SEO и ища Google ceplocal2003 я нашел много бесполезных сайтов, которые, кажется, просто линкофермы, которые связывались назад с нашим сайтом. Это - то, где я запустил чтение на .htaccess.

Так, любой шанс с той информацией, что вышеупомянутые предложения могли быть скомпилированы в блок, который будет работать на меня.

Если я получаю то, что Вы два говорите, что я должен заблокировать все "использование горячих ссылок" и другой сайт, крадущий полностью, и затем просто позволить тем, которые должны быть разрешены как yellowpages и goldbook и т.д.

Мальчик делает я когда-либо чувствую себя подобно Alice, падающей кроличья нора теперь LOL, неделю назад я думал бы, что htaccess был чем-то Intel, разработанный для материнской платы :)

0
ответ дан 3 December 2019 в 07:16

порядок отклоняет, позволяет, для блокирования дюйм/с/хостов (и не должен действительно использоваться для блокирования хостов, поскольку это сделает поиск DNS для каждого запроса, который мог быть заблокирован).

Мое личное отношение - то, что необходимо просто заблаговременно заблокировать любую попытку использования горячих ссылок вместо того, чтобы блокировать тех, которые злоупотребляют им. если бы Вы хотели заблокировать все .ru ссылающиеся домены, то они были бы покрыты по другим правилам для Ваших изображений.

Если бы Вы хотели заблокировать их от соединения до Вашего сайта вообще, то необходимо было бы записать более общее правило и включать их ниже правил что блок использование горячих ссылок изображения:

RewriteCond %{HTTP_REFERER} ^http://(.*@)?([a-z0-9]+\.)*(refblock\.com|tamanria\.com|\.ru)(:[0-9]+)?(/.*)?$ [NC]
RewriteRule .* - [F,L]
0
ответ дан 3 December 2019 в 07:16

В то время как клуб мальчиков StackOverflow снова оценивает неправильный ответ и прокладывает корректный ответ под землей, я консолидировал данные в единственное сообщение, которое может быть скопировано. У меня нет достаточного количества представителя для редактирования моего предыдущего сообщения, ни, комментарий к сообщению Massimo, которое технически действительно, но, вызвало бы проблемы производительности по линии. Используя имена хостов в отклонении от блока очень общая, ошибка новичка, и 99% времени на самом деле не решают проблему. Отклонять блок предотвратил бы любой хост, который содержит обратный DNS, заканчивающийся в .ru или tamanria.com от доступа к Вашему сайту. Это предполагает, что обратный DNS правильно настроен. Многие хостинговые компании используют свой собственный домен для обратного отображения, а не доменного имени, которое подается. Отклонение от .ru заблокировало бы любого серфингиста, который имел обратный поиск DNS, который закончился в .ru, который, возможно, был приемлемым компромиссом. Однако любой, который имеет IP-адрес без надлежащего обратного DNS, испытал бы задержку при доступе к сайту. Если бы их сайт имел linkchecker или паука для нахождения содержания, то это было бы допустимо, но, будет более безопасно заблокировать IP-адрес сервера или диапазона IP-адреса. Другая общая, но фатальная ошибка в опровергать заявлении

deny from 1.2.3.*

В то время как это выглядит достаточно невинным, * в конце означает, что значение должно быть проверено по 1.2.3.domain.com, который снова вызывает обратный поиск DNS для каждого запроса файла. Чтобы сделать частичные соответствия с отклонять блоком, соответствующий формат:

deny from 1.2.3.

или

deny from 1.2.3.0/24

В любом случае следующее - то, что должно использоваться в .htaccess

AddHandler server-parsed .htm
Addhandler application/x-httpd-php .html .php
AddType image/gif .gef

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.*@)?([a-z0-9-]+\.)*(yellowpages\.ca|cep\.ca|goldbook\.ca)(:[0-9
]+)?(/.*)?$ [NC]
RewriteRule .*.(asf|mpg|mpeg|wmv|avi|rm|gif|jpeg|jpg|zip)$ http://www.ceplocal2003.org/images/Refererblock.gef [NC,F,L]

#include this line only if you want to block ALL referring access from refblock.com, tamanria.com and all .ru sites.
RewriteCond %{HTTP_REFERER} ^http://(.*@)?([a-z0-9]+\.)*(refblock\.com|tamanria\.com|\.ru)(:[0-9]+)?(/.*)?$ [NC]
RewriteRule .* - [F,L]

Я удалил проверку на Refererblock.gef, поскольку это не одно из заблокированных расширений и было бесполезной проверкой. Когда я записал правила ранее, я неправильно читал его как .gif, а не .gef. Кроме того, как проверку вышеупомянутого .htaccess, я заметил, что Ваш .gef файл подается с неправильным типом пантомимы текста/плоскости, а не image/gif. Я включал директиву AddType выше для фиксации его так, чтобы пользователям Firefox не предложили сохранить изображение на диск.

Я не знаю, хотели ли Вы проанализировать .html файлы для SSI и для php. Я удалил .html, анализирующий, поскольку Apache действительно не обрабатывает это слишком хорошо. С Apache2 необходимо использовать Обработчики для парсинга страницы, если необходимо сделать и PHP и SSI на той же странице.

Надо надеяться, Вы получаете эту информацию быстро, прежде чем это получит edited/downvoted в забвение. Хотя, если история преподавала мне что-нибудь этому сайту, мы будем видеть ответ, объединенный в чей-то ответ, который имеет намного более высокую карму.

0
ответ дан 3 December 2019 в 07:16

Теги

Похожие вопросы