20+ правил .htaccess, которые должен знать каждый разработчик

20 правил .htaccess которые должен знать каждый разработчик

Представляю вашему вниманию — подборку правил для .htaccess, собранную автором JP в блоге DevMoose — с моими комментариями и дополнениями.

Обсуждение — приветствуется!

При правильном использовании, конфигурационный файл web-сервера Apache — .htaccess (hypertext access) представляет собой очень мощное средство в инструментарии разработчика. По-обыкновению, основной файл располагается в корневой директории вашего web-сервера (также могут присутствовать отдельные файлы в каждой папке — для управления доступом) и может быть откорректирован с помощью любого текстового редактора. В этой статье я покажу вам 20 правил для  .htaccess и поясню для чего их использовать.

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

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

Кроме того, помните — работоспособность указанных ниже правил зависит от настроек вашего web-сервера, заданных хостером. Некоторые директивы могут быть запрещены и не работать.

.htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.

Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess).

Для того чтобы эти файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла (значение директивы AllowOverride должно быть установлено All). Как правило, подавляющее большинство хостеров разрешают использовать свои файлы .htaccess.

1. Запрещаем загрузку файлов с внешних сайтов

Вам надоели люди, которые размещают картинки, опубликованные на вашем сайте — на своих ресурсах, тем самым расходуя ваш траффик и создавая ненужную нагрузку на ваш хостинг? Данный код, размещенный в конца вашего файла  .htaccess, позволит предотвратить загрузку ваших изображений — сторонними сайтами.

Options +FollowSymlinks
#Запрещаем загрузку файлов с внешних сайтов
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/stop_stealing_bandwidth.gif[nc]
Не забудьте изменить domainname.com на ваше доменное имя и создать изображение stop_stealing_bandwidth.gif, которое будет показано вместо запрошенной картинки.

2. Блокируем все запросы от нежелательных User Agents

Это правило позволяет заблокировать нежелательные User Agent, которые могут быть потенциально опасными или просто перегружать сервер ненужными запросами.

#Блокируем плохих ботов и роботов
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
<limit get="" post="" head="">
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</limit>
Список User Agent браузеров, роботов и пауков поисковых машин, веб-каталогов, менеджеров закачек, спам-ботов и плохих ботов можно найти на сайте List of User-Agents.

3. Запрещаем доступ для всех, кроме указанных IP-адресов

Если по какой-либо причине, вы хотите запретить всем или разрешить только отдельным IP-адресам доступ к вашему сайту — добавьте этот код в ваш .htaccess-файл:

#Запрещаем доступ для всех, кроме указанных IP-адресов
ErrorDocument 403 http://www.domainname.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123
Не забудьте изменить domainname.com на ваше доменное имя.

4. Настраиваем SEO-Friendly 301 Redirect

Если вы перенесли доменное имя или хотите перенаправлять пользователя на определенную страницу (страницы), без санкций со стороны поисковых машин, используйте этот код:

#Настраиваем SEO-Friendly 301 Redirect
Redirect 301 /d/file.html http://www.domainname.com/r/file.html
Не забудьте изменить domainname.com на ваше доменное имя, а /d/file.html и /r/file.html на соответствующие директории и страницы.

5. Создаем собственные страницы ошибок

Вам надоел стандартный вид страниц ошибок? Нет проблем — с помощью следующего кода, вы легко можете создать свою страницу и показывать пользователю именно ее:

 
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
Не забудьте создать в корневой директории вашего сервера папку error и разместить в ней соответствующие файлы.

6. Создаем черный список IP адресов

Устали от спам-комментариев или определенного пользователя? Просто заблокируйте его IP с помощью следующего кода, добавляемого в .htaccess-файл.

#Создаем черный список IP адресов
allow from all
deny from 145.186.14.122
deny from 124.15.
Узнать IP адреса комментаторов можно или в логах Apache или с помощью сервисов статистики. Для WordPress, IP адреса комментаторов можно увидеть в административной панели.

7. Устанавливаем e-mail адрес по-умолчанию для администратора сервера

Используйте данный код, для того, чтобы установить e-mail адрес по-умолчанию для администратора сервера.

#Устанавливаем e-mail адрес по-умолчанию для администратора сервера
ServerSignature EMail
SetEnv SERVER_ADMIN default@domain.com
Не забудьте заменить default@domain.com — своим e-mail адресом.

8. Защищаем определенный файл

Нижеследующий код позволяет вам запретить доступ к любому файлу — при запросе будет выдаваться ошибка 403. Для примере я закрыл доступ к самому файлу htaccess, повысив уровень безопасности сайта.

#Защищаем .htaccess файл
<files .htaccess>
order allow,deny
deny from all
</files>

9. Сжимаем элементы с помощью mod_deflate

В качестве альтернативы компрессии файлов с помощью Gzip, вы можете использовать mod_deflate (предположительно работает быстрее). Разместите следующий код в начале вашего файла .htaccess (также вы можете добавить .jpg|.gif|.png|.tiff|.ico):

#Сжимаем элементы с помощью mod_deflate
<ifmodule mod_deflate.c="">
<filesmatch .(js|css)$="">
SetOutputFilter DEFLATE
</filesmatch>
</ifmodule>

10. Добавляем срок жизни в заголовки

Данный код позволяет добавить сроки жизни в заголовки:

#Добавляем срок жизни в заголовки
<filesmatch .(ico|pdf|flv|jpg|jpeg|png|gif|swf)$="">
Header set Expires "Wed, 21 May 2010 20:00:00 GMT"
</filesmatch>

11. Устанавливаем страницы по-умолчанию

Обычно страницей по-умолчанию является index.html, однако с помощью этого кода вы можете настроить по-умолчанию любую другую страницу.

#Устанавливаем альтернативную страницу по-умолчанию
DirectoryIndex about.html

12. Защищаем паролем папки и файлы

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

#защита паролем файла
<files secure.php="">
AuthType Basic
AuthName "Prompt"
AuthUserFile /pub/home/.htpasswd
Require valid-user
</files>

#защита паролем папки
resides
AuthType basic
AuthName "This directory is protected"
AuthUserFile /pub/home/.htpasswd
AuthGroupFile /dev/null
Require valid-user
Для того, чтобы организовать доступ к файлу по паролю, необходимо создать файл .htpasswd и внести в него пару логин-пароль в формате user:password.

Однако в этом случае пароли будут хранится в открытом виде, что не слишком хорошо с точки зрения безопасности. Поэтому оптимальнее пароль зашифровать. Для этого воспользуйтесь сервисами генерации записей в файлы .htpasswd. Например, вот таким.

В нашем примере файл с паролями доступа лежит в корневой директории сайта и называется .htpasswd. Директория указывается от корня сервера и если путь будет некорректным — Apache, не получив доступа к файлу, откажет в доступе к папке любому пользователю — в том чилсе и тому, который ввел правильную пару логин:пароль.

13. Перенаправляем со старого домена — на новый

Используя .htaccess, вы можете настроить перенаправление со старого доменного имени на новое, добавив следующий код:

#Перенаправляем со старого домена - на новый
RewriteEngine On
RewriteRule ^(.*)$ http://www.domainname.com/$1 [R=301,L]
Перенаправление используется в том случае, если вы переносите свой существующий сайт на новое доменное имя. В этом случае любой пользователь, который наберет в адресной строке http://www.olddomainname.com — будет перенаправлен на http://www.domainname.com

14. Усиливаем кеширование

Использование этого правила не означает прямое ускорение загрузки вашего сайта. Оно предназначено для более быстрой загрузки сайта — для уже заходившего на него посетителя, путем отправки статуса 304 для тех элементов, которые не обновлялись. Таким образом, при повторной загрузке страницы браузер посетителя не будет заново скачивать изображения, скрипты или CSS, а выведет те файлы, которые уже хранятся в его кеше. Вы можете изменить срок жизни кеша, путем корректирования его значения в годах (year), месяцах (month) или, например — секундах (seconds). В примере указан 1 год.

#Усиливаем кеширование
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>

15. Сжимаем компоненты сайта путем включения Gzip

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

#Сжимаем компоненты сайта путем включения Gzip
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Обратите внимание, что включение компрессии приведет к большей нагрузке на процессор сервера.

16. Удаляем «category» из URL

Для изменения ссылки http://yourdomain.com/category/blue на http://yourdomain.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.

#Удаляем category из URL
RewriteRule ^category/(.+)$ http://www.yourdomain.com/$1 [R=301,L]
Не забудьте изменить http://www.yourdomain.com на ваше доменное имя.

17. Запрещаем просмотр содержимого папки

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

#Запрещаем просмотр содержимого папки
Options All -Indexes

Update: Jack.Sun предложил альтернативное решение, имеющее такой же результат — разместить в каждой папке файл index.html. От себя добавлю, что этот метод будет работать только в том случае, если вы не изменяли страницу по-умолчанию (см. правило #11). В этим случае, необходимо размещать файлы с тем новым именем, которое было задано вами в качестве страницы по-умолчанию.

18. Перенаправляем RSS-ленту WordPress на FeedBurner

Этот код позволяет перенаправить RSS-ленту WordPress на сервис Google Feedburner.

#Перенаправляем RSS-ленту WordPress на FeedBurner
<ifmodule mod_rewrite.c="">
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^rss.xml$ http://feeds.feedburner.com/yourfeed [R=302,NC,L]
</ifmodule>
Изначально необходимо зарегистрировать ленту своего блога в сервисе Feedburner. Далее не забудьте заменить yourfeed на имя вашей ленты уже в Feedburner.

19. Запрещаем комментарии от пользователей без Referrer

Чаще всего спам-боты обращаются напрямую к файлу wp-comments-post.php, не заходя на страницы записей вашего блога. Приведенный ниже код позволяет заблокировать комментарии, отправленные пользователями, которые пришли «из ниоткуда», позволяя комментировать тем читателям, которые перешли на страницу вашего блога с каких-либо других страниц (например, результатов поиска Google).

#Запрещаем комментарии от пользователей без Referrer
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Не забудьте заменить yourblog.com на доменное имя вашего блога.

20. Убираем расширение файла из URL

Данный код позволяет удалить расширение файла .php (вы можете изменить его на любое другое, например — .html) из URL-адресов страниц.

#Убираем расширение файла из URL
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

21. Защищаем сайт

Данный код позволяет защитить сайт от scripts enjection и нежелательных модификаций _REQUEST и/или GLOBALS

#Включаем отслеживание сим-ссылок
Options +FollowSymLinks
#Запускаем url_rewriting
RewriteEngine On
#Блокируем все ссылки, содержащие <script>
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#Блокируем все скрипты, которые пытаются изменить переменные PHP Globals:
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#Блокируем все скрипты, которые пытаются изменить переменную _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
#Перенаправляем все подобные на страницу с ошибкой 403 - запрещено
RewriteRule ^(.*)$ index.php [F,L]

Источник: WPRecipes.

22. Перенаправляем посетителя с помощью директивы RedirectMatch и регулярных выражений

Еще одна полезная директива, рекомендуемая к использованию Хайпер — RedirectMatch. Цитата из комментариев: «Директива позволяет в качестве запрашиваемого адреса использовать регулярное выражение (пересылка не «с документа», а «со всех документов, типа …»). Редирект внешний — браузеру сообщается о необходимости загрузить другую страницу.

Синтаксис:

RedirectMatch [status] regexp URL

Значения статусов (код возврата веб-сервера) стандартные: permanent (301 — постоянный редирект), temp (302 — временный редирект, приходите ещё), seeother (303 — летим туда, там много вкусного), gone (410 — удалён навсегда).

Пример. То же перенаправление со старого домена на новый без подключения RewriteEngine:»

RedirectMatch 301 ^(.*)$ www.domainname.com/$1

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

RedirectMatch (.*)\.gif$ http://www.myserver.com$1.png
RedirectMatch (.*\.jpg)$ http://www.myanother.com$1

23. Устанавливаем редирект для URL с GET параметрами

В том случае, если нужно сделать редирект с URL с параметрами, например: «//www.proofsite.com.ua/wp-trackback.php?p=264», описанная в п. 4. «Настраиваем SEO-Friendly 301 Redirect» конструкция — работать не будет, поскольку GET параметр мешает правильной интерпретации команды.

Для корректного перенаправления URL с GET запросом, нужно прописать следующие директивы  (на примере URL: //www.proofsite.com.ua/wp-trackback.php?p=264):

RewriteEngine On
RewriteCond %{QUERY_STRING} ^p=264$
RewriteRule ^wp-trackback\.php$ //www.proofsite.com.ua/article-2242.html? [L,R=301]

Обратите внимание, «?» в конце URL не ошибка — а обязательно присутствующий знак!

24. Включение PHP в .html файлах

Еще одна директива, рекомендуемая Ruliks — позволяет убрать сопоставление по-умолчанию .html и .htm файлов с файлами с гипертекстовой разметкой, и добавить их обработку php-интепретатором.

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
Обязательно сделайте резервную копию файла .htaccess до внесения изменений и проверьте работоспособность всего сайта — после добавления новых строк.

А какие правила знаете вы? Напишите их в комментариях и они будут добавлены в статью с указанием ссылки на сайт автора.

249 комментариев к “20+ правил .htaccess, которые должен знать каждый разработчик”

  1. Большинство методов довольно сильно нагружают сервер, хотя это намного лучше чем использование плагинов выполняющих аналогичную функцию.

    17. Запрещаем просмотр содержимого папки

    Не знаю на счёт других CMS, но в случае с WP достаточно создать пустой файл index.html в папке :)
    В общем за статью спасибо, мне кажется очень полезной.

    ReplyReply
  2. @jack.sun: спасибо за комментарий. Да, Вы совершенно правы — решения действительно грузят сервер, но в случае с, например, WordPress приходится выбирать — или расходовать и без того урезанный (за счет прожорливости) ресурс memory_limit или же грузить сервер. На стандартном блоге со средней посещаемостью, нагрузка на сервер, создаваемая этими правилами, скажется несущественно.

    Не знаю на счёт других CMS, но в случае с WP достаточно создать пустой файл index.html в папке

    Эта возможность работает вне зависимости от CMS, т.к. функционирует на уровне сервера. Оба решения равны, но в случае с .htaccess — достаточно прописать одну строку в файле, а в варианте с index.html — придется раскладывать эти файлы в каждую папку.

    ReplyReply
  3. Эта возможность работает вне зависимости от CMS, т.к. функционирует на уровне сервера. Оба решения равны, но в случае с .htaccess — достаточно прописать одну строку в файле, а в варианте с index.html — придется раскладывать эти файлы в каждую папку.

    Верно, просто вы попросили:

    А какие правила знаете вы?

    Вот я и привёл пример :)

    ReplyReply
  4. Не только в WP помогает создание index.html.
    А насчет перегрузки сервера — это да…. больная тема.

    ReplyReply
  5. @jack.sun: с этой точки зрения — согласен :) Хотя это все же и не правило .htaccess, но решение действительно альтернативное и выполняет абсолютно те же функции, я добавил его в статью с указанием ссылки на Ваш блог :)

    Спасибо! :)

    ReplyReply
  6. @SibNext: больная тема — это скорее shared hosting с его ограничениями на все параметры :) VPS или свой сервер — снимают все эти проблемы, но с другой стороны, их использование должно быть оправдано экономически.

    ReplyReply
  7. @© Yaroslav.Ch: Не соглашусь отчасти по ценам.
    тот же fastvps может предложить за 360 рублей в месяц весьма неплохие параметры… у меня 3 сервера… на одном из таких висит 6 проектов, с суммарной посещаемостью за 500 уников в сутки (кол-во страниц на вскидку не скажу… только по одному проекту больше 2к). Конечно если сравнивать с каким-нибудь Джино с его шаредом — ценник завышен, но если тот-же свеб или … в последнее время что-то все взялись рекламировать beget так там вообще цены как на самолет.

    Хотя, если честно, я уже забыл, что такое шаред с его вечными «нельзя».:)

    ReplyReply
  8. Хмм, ну я клиентские вешаю на vps только лишь в том случае, если либо а) есть админ, б)либо раз настроил и забыл, в) либо (уже второй клиент) получаю ежемесячные скромные $$$ за поддержку.
    Кстати упомянутая статейка — на 5 с плюсом. Хотя есть и спорные моменты. Но в основном касаемо наверное буржунета. С нашими заказчиками почти все в точку.

    ReplyReply
  9. @SibNext:

    в) либо (уже второй клиент) получаю ежемесячные скромные $$$ за поддержку.

    Я предпочитаю все же отдавать все на откуп хостерам и регистраторам — вне зависимости от количества заказов клиента.

    Мнения насчет этой статьи, кстати, кардинально расходятся — кто-то говорит, что все это исключительно про буржунет, кто-то — что именно про наши сегменты (рунет, уанет) :)

    Кстати, мы как обычно удалились от основной темы статьи ;)

    ReplyReply
  10. Ну а по теме — материал знатный вышел. Можно в википедии ссылку давать на этот пост :)

    ReplyReply
  11. По пункту 14, не будет мешать работе плагина по кешированию или плагин можно отключить.

    ReplyReply
  12. @Rostislav.:

    не будет мешать работе плагина по кешированию

    Думаю — нет, но на всякий случай для каждого блога желательно тестировать отдельно, поскольку плагинов даже для того же WordPress существует несколько и у каждого есть свои специфические настройки.

    или плагин можно отключить.

    Нет, отключать не стоит. Дело в том, что это правило только отдает на уровне сервера запрашивающему браузеру статус документов, которые не нужно скачивать заново, поскольку они не менялись. То есть если посетитель уже был на сайте — определенный кеш есть в его браузере и заново качать те же файлы (изображения, CSS, скрипты) — исходя из их статуса, нет необходимости.
    В результате при повторном запросе, браузер получит статус 304, но не сами файлы — тем самым снижается нагрузка на сервер.
    Но полноценный файловый кеш — так, как это делают плагины — это правило не создает.

    ReplyReply
  13. А вот у меня вопрос если запаролить папку, или файл — то но будет выводи форму для ввода пароля? Ну как когда к фтп логишься через браузер, или к платникам;)

    ReplyReply
  14. Мне ещё нравится директива RedirectMatch — аналогична Redirect, но позволяет в качестве запрашиваемого адреса использовать регулярное выражение (пересылка не «с документа» а «со всех документов, типа..»). Редирект внешний (браузеру сообщается о необходимости загрузить другую страницу)

    Синтаксис:
    RedirectMatch [status] regexp URL

    Значения статусов (код возврата веб-сервера) стандартные: permanent (301 — постоянный редирект), temp (302 — временный редирект, приходите ещё), seeother (303 — летим туда, там много вкусного), gone (410 — удалён навсегда).

    Пример. То же перенаправление со старого домена на новый без подключения RewriteEngine:

    RedirectMatch 301 ^(.*)$ http://www.domainname.com/$1

    ReplyReply
  15. вопрос по пунктам 14) и 15)
    у меня сервер на котором лежат сайты с общим (суммарным) количеством уникальных посетителей в сутки до 5000 в том числе портал с посещаемостью свыше 1000 уникальных пользователей. Собственно вопрос: Если я попробую использовать методы кеширования и сжатия (пункт 14) и 15)) они сильно повлияют на нагрузку на сервер ?

    ReplyReply
  16. @atbserg: честно говоря, я не возьмусь ставить диагноз по фотографии — возможно, кто-то из коллег согласится.

    Как минимум:
    а) неизвестно какой сервер;
    б) неизвестно какие сайты на нем лежат;
    в) неизвестна текущая нагрузка;
    г) неизвестно что именно делают на сайте посетители.

    В принципе, Вам ничто не может помешать попробовать:
    1. замерить существующую нагрузку;
    2. выбрать сайт, которые генерирует наименьшую нагрузку на сервер;
    3. применить для него указанные правила;
    4. мониторить нагрузку;
    5. по прошествии определенного количества времени (желательно после какого-либо пика посещаемости) оценить нагрузку и эффективность использования данных правил для Вашей ситуации.

    ReplyReply
  17. А не подскажите как быть в такой ситуации:
    имею ссылки с форумов на определенные страницы своего сайта
    однако недавно поменял движок сайта и таких страниц теперь не существует, т.е теперь эти ссылки ведут на страницу 404
    Как перенаправить их с помощью htaccess на определенные разделы обновленного сайта?

    ReplyReply
  18. @Vasiliy: а вот для этого как раз и предназначено 4 правило: «Настраиваем SEO-Friendly 301 Redirect«.

    Но ваша ситуация несколько двоякая — если ссылок не много, то можно вручную создать нужные директивы только для определенных страниц, но если ссылок большое количество, то остается перенаправлять по, например, разделам. В этом случае нужно прописать так:
    RedirectPermanent /old-directory http://www.domain.com/new-directory/

    Хотя, с точки зрения поисковых машин — на мой взгляд, это не самый лучший вариант.

    Можно использовать не только .htaccess и написать скрипт соответствия старых адресов — новым, с помощью PHP и при открытии старого URL перенаправлять на новый (отдавая статус 301), но тут надо знать логику старых и новых ссылок.

    ReplyReply
  19. Я даже половины не знаю.
    Какой же я разработчик. Было бы больше времени начал бы учить….

    ReplyReply
  20. @Kabban:
    301 редирект домена с WWW на домен без WWW:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.domainname.com$ [NC]
    RewriteRule ^(.*)$ http://domainname.com/$1 [R=301,L]
    domainname.com нужно заменить на соответствующее название домена.

    ReplyReply
  21. @lord: собственно, наизусть знать все эти правила не обязательно, нужно помнить о том, что их можно использовать и как именно использовать, а также просто хранить под рукой шпаргалку.

    Хотя, выучить синтаксис .htaccess все же не помешает.

    ReplyReply
  22. Вот то, что я давно искал!
    Круто! Спасибо!
    А то я не техник. не рублю в этих премудростях.
    с меня РТ и буз

    ReplyReply
  23. 6. Создаем черный список IP адресов

    1 #Создаем черный список IP адресов
    2 allow from all
    3 deny from 145.186.14.122
    4 deny from 124.15.

    Последняя строка — блокирование по началу IP ?

    ReplyReply
  24. @Алексей: это блокировка по маске.

    Вы можете указывать IP адрес частично — это означает, что будут отбираться все адреса, содержащие в себе указанную маску. Например, если вы укажете «127.255.0», то в соответствие будут подставлены адреса, начиная с «127.255.0.0» по «127.255.0.255».

    ReplyReply
  25. Хорошая статья на «больную» тему :)
    Помню заказывал Shared-хостинг… Море негатива в плане «сие ниможна, то тоже ниможна!». Потом перешли на VPS и тут можно было вздохнуть полной грудью :)

    ReplyReply
  26. @ielektronick: спасибо за комментарий.

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

    ReplyReply
  27. а возможно ли использование нескольких правил одновременно в одном htaccess файле?
    и как это разделение будет выглядеть в тексте файла?

    ReplyReply
  28. @Денис: да, конечно. Единственное — правила не должны противоречить друг-другу.

    Разделение — просто абзацами. Никаких специальных символов или разделителей не требуется.

    ReplyReply
  29. @© Yaroslav.CH: спасибо большое! я новичок в сайтостроении и вот изучаю хтаццесс. =)

    ReplyReply
  30. Спасибо за ценные советы. Весь инет облазил уже в поисках ответа на вопрос как запаролить папку от юзеров. Очень помог. Респект ))))

    ReplyReply
  31. у меня тут вопросик получился при использовании htaccess:
    а можно где нить типа галочку сделать, чтоб он не сохранял в компе пароль по желанию
    а то так получается один раз с чужого компа ввел и потом пароль менять?
    а так все работает спасибо )))

    ReplyReply
  32. @Антон: пароль сохраняется только в том случае, если указать его сохранять. Но этот момент не относится к .htaccess — это уже функции самого браузера.

    Если у Вас Firefox, Chrome или Opera — в настройках можно удалить сохраненный пароль.

    ReplyReply
  33. Здравствуйте, автору огромное спасибо. У меня вопрос такой, я перевела сайт на новый домен и через месяц примерно удалила сайт со старым доменом. Но вот беда, новый сайт Яндекс перестал индексировать, я так думаю, потому что никто по Яндексу не заходит, на старый блог он приводил посетителей. если я пропишу в этом файле #Перенаправляем со старого домена — на новый RewriteEngine On RewriteRule ^(.*)$ http://www.domainname.com/$1 [R=301,L] то есть надежда, что Яндекс проиндексирует новый и люди будут приходить на новый блог? И как вы думаете, почему Яндекс новый домен не полюбил? Домену почти 2 месяца, постоянно обновляется и авторский контент.

    ReplyReply
  34. @Ляйсан Шагалиева:
    Не совсем понятно, что имеется ввиду «перестал индексировать»? А раньше он индексировался? Если да, то редирект ничем не поможет.

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

    А отсутствие посещений, в принципе, не обязательно связано с отсутствием сайта в выдаче — могут быть просто слабые позиции.

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

    ReplyReply
  35. пасибо за подборку. Очень полезно, страничку в букмарки.

    ReplyReply
  36. Большое спасибо за статью, Ярослав. Я перевел свой блог из одного поддомена в другой и хотел сделать грамотное перенаправление, так как раньше в постоянных ссылка у меня фигурировали названия категорий, а в новой версии блога я их убрал (чем глубже папка, тем меньше PR — думаю верное мнение). Перерыл кучу ресурсов по .htaccess. Везде одно и тоже, но ответ на свой вопрос я нашел только в этой статье!

    ReplyReply
  37. А подскажите насчет 3 пункта (блокировки) если я хочу что-бы мой сайт был виден только в локальной сети, мне нужно прописать все адреса??? Или можно использовать шаблон? Например адреса в сети 10.10.10.*** Как лучше сделать,сайт построен на joomla

    ReplyReply
  38. @Саня: нет, в этом случае нужно прописать блокировку для всех адресов, кроме Вашего IP. Однако нужно учесть, что этот IP должен быть статичным.

    С другой стороны, не вижу смысла выкладывать сайт в публичный доступ для того, чтобы его закрыть для всех. Оптимальнее развернуть локальный web-сервер в своей же сети — без выхода в мир — и ходить на сайт как на внутренний ресурс.

    ReplyReply
  39. Мой сайт находится на хостинге у выше стоящего провайдера, вот и хочу что-бы доступ имели только пользователи моей сети, а разворачивать локальный web-сервер нет смысла….Значит нужно прописать все существующие IP адреса…а как мне это сделать?Заранее спасибо

    ReplyReply
  40. @Саня: ну если Вы хотите сделать именно так, узнаете все необходимые IP-адреса и прописываете их в таком формате:
    Allow from 102.54.68.123

    Либо же, можно прописать по маске:

    Allow from 102.54.68. или Allow from 102.54.

    Естественно, вместо «102.54.68.123» пишете нужные Вам IP или его части.

    ReplyReply
  41. Огромное спасибо за подсказки, сайт замечательный!!!

    ReplyReply
  42. О, отличная статья, спасибо. А насчет 17 правила — у меня хостинг так настроен, что если кто-то лезет в папку, в которой нет индексного файла (index.*), то сервер выдает «Доступ запрещен».

    А насчет 12 пункта: это работает везде или только где PHP установлен полноценно, а не как cgi-программа? Или без разницы? Просто не сталкивался с таким вариантом.

    ReplyReply
  43. @Mozgotrah: спасибо за комментарий.

    А насчет 12 пункта: это работает везде или только где PHP установлен полноценно, а не как cgi-программа? Или без разницы? Просто не сталкивался с таким вариантом.

    Если я не ошибаюсь, то особой разницы нет — должен работать в любом варианте. Честно говоря, никогда не задавался таким вопросом — необходимости не было.

    ReplyReply
  44. 1. Для защиты файла .htaccess проще использовать правило:

    RewriteRule ^.htaccess$ — [F]

    оно переадресует запрос файла на страницу ошибки 403 «Доступ запрещен». Достаточно записи в одном файле .htaccess в корне сайта, его действие распространится и на вложенные папки с собственным файлом .htaccess (если таковые имеются).

    2. Правило для склейки роботом и перенаправления на сайт с указанием WWW (постоянный редирект). Это не позволит пиару размазываться на домен с WWW и домен без WWW.

    RewriteCond %{HTTP_HOST} ^proofsite\.com\.ua$
    RewriteRule ^(.*)$ http://www.proofsite.com.ua/$1 [R=301]

    или обратное правило

    RewriteCond %{HTTP_HOST} ^www\.proofsite\.com\.ua$
    RewriteRule ^(.*)$ http://proofsite.com.ua/$1 [R=301]

    3. Запрет показа php-ошибок. Усложняем жизнь хакеру.

    php_value display_errors OFF

    к сожалению, не на всех хостингах работает, поэтому можно увидеть белую страницу после его применения.

    ReplyReply
  45. 1. а есть значение в каком порядке эти пункты записывать в файл?
    2. если я использую «9. Сжимаем элементы с помощью mod_deflate», то «15. Сжимаем компоненты сайта путем включения Gzip» уже не нужно?
    3. А как проследить что «18. Перенаправляем RSS-ленту WordPress на FeedBurner» что-то перенаправляет?

    ReplyReply
  46. @ Dsaha:
    1. Насколько помню — порядок значения не имеет. Главное, чтобы каждая запись была отдельной и никак не пересекалась с остальными и записи не противоречили друг-другу — иначе будут ошибки.

    2. Да, либо — либо, включать две компрессии нет необходимости.

    3. Очень просто. Ссылка на обычную ленту выглядит как http://[домен блога]/feed, а лента на Feedburner обычно имеет вид http://feeds.feedburner.com/[название ленты].

    ReplyReply
  47. 3. Очень просто. Ссылка на обычную ленту выглядит как http://[домен блога]/feed, а лента на Feedburner обычно имеет вид http://feeds.feedburner.com/%5Bназвание ленты].

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

    ReplyReply
  48. вот что вставила в .htaccess а rss осталось прежнее как в rss 2.0 так и в Atom 0.3

    #Перенаправляем RSS-ленту WordPress на FeedBurner

    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
    RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
    RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/sheko [R=302,NC,L]

    вставила, естественно с http: — это тут его обрезало:)

    ReplyReply
  49. @ Dsaha:
    Попробуйте вот такой вариант:
    [IfModule mod_rewrite.c]
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
    RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
    RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/yourfeed [R=302,NC,L]
    [/IfModule]

    Для IfModule mod_rewrite.c и /IfModule — квадратные кавычки замените на <> и yourfeed на Вашу ленту.

    ReplyReply
  50. подскажите, почему не срабатывает редирект?
    на мой сайт часто заходят из яндекса на странную страницу sheko.ru/wp-trackback.php?p=264 … она почему-то висит в поиске, но выдает какую-то ерунду, я решила стедаль 301 редирект на нужную в этом случае страницу. Вообщем мой файл .htaccess начинается прямо с этой строчки:

    RedirectMatch 301 http://sheko.ru/wp-trackback.php?p=264 http://sheko.ru/2009/11/chto-takoe-vektornaya-grafika.html
    

    может это не правильно? Не могу понять почему не срабатывает?

    ReplyReply
  51. @ Dasha: для корректного редиректа нужно прописывать не домены, а страницу и домен. Попробуйте:

     Redirect 301 /wp-trackback.php?p=264 htp://www.domainname.com/r/file.html 
    ReplyReply
  52. RedirectMatch 301 /wp-trackback.php?p=264 htp://sheko.ru/2009/11/chto-tak...afika.html

    так тоже не работает:(

    ReplyReply
  53. @ Dsaha:
    RedirectMatch прописывается иначе. В данном случае нужно писать либо «Redirect 301», либо «RedirectPermanent».

    ReplyReply
  54. ну вобщем не работает

    
    Redirect 301 /wp-trackback.php?p=264 http://sheko.ru/2009/11/chto-takoe-vektornaya-grafika.html
    
    
    ReplyReply
  55. @ Dasha: а, блин — ну конечно не работает, там же GET параметры внутри. Из головы вылетело, что стандартный редирект с параметрами не функционирует, сорри :)

    Чтобы заработало, нужно написать следующее.

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^p=264$
    RewriteRule ^wp-trackback\.php$ http://www.proofsite.com.ua/article-2242.html? [L,R=301]
    
    ReplyReply
  56. Огроооооомное Вам спасибо!!!!!
    Второй день мучаюсь, ни на одном форуме ничего не подсказали!!!

    ReplyReply
  57. Добрый день

    Ув. Yaroslav.CH, скажите пожалуйста, есть ли в .htaccess решение такой проблемы:
    — Обнаружил полную копию большей половины своего сайта, с текстом, картинками, css стилями..
    Воровство Изображений и скачиваний файлов удалось решить:

     
    
    RewriteEngine on RewriteCond %{HTTP_REFERER} !^$                         
    RewriteCond %{HTTP_REFERER} !^http://(www.)?мой-сайт.ru/.*$ [NC]
    RewriteRule .(jpg|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip)$ - [F]
    

    Но тексты остались, форматирование не изменилось. (Грузятся с моего)
    IP адрес сайта ВРАГА в логах отсутствует ((
    Вопрос: Есть ли какая-то общая конструкция, запрещающая «подгрузку» текстов с моего ресурса на чужой?
    Спасибо.

    p.s: Статья очень нужная и, что очень важно, понятная. Отдельное спсб. )

    ReplyReply
  58. @ Владимир:
    Не совсем понятен момент с «тексты грузятся с моего сайта». Они подтягиваются с Вашего сайта в момент загрузки страницы чужого сайта? Через iframe какой-нибудь, чтоль? Или они уже существуют на чужом сайте?

    ReplyReply
  59. @ Yaroslav.CH:

    Они подтягиваются с Вашего сайта в момент загрузки страницы чужого сайта?

    Yaroslav, прошу прощения, не совсем корректно ответил.

    — Да, они подтягиваются с моего сайта. Пробовал немного изменить свой текст — у «друга» он также изменяется.

    ReplyReply
  60. @ Владимир: хм, честно говоря, не совсем понятно, как работает схема. Можно, конечно, добавить в перечень запрещенных файлов — html, но потенциально могут возникнуть проблемы с поисковиками.

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

    Узнать можно с помощью, например, этого сервиса.

    ReplyReply
  61. @ Yaroslav.CH:

    К сожалению, блокировка по IP не срабатывает. Закрывал и IP сайта и всю подсеть, видимо скрипт расположен на отдельном хостинге, и круглосуточно клепает десятки сапо-выжималок. )

    Я пытался в логах посмотреть, да там «сам черт ногу сломит», было бы от него хоть два-три десятка запросов, а так..

    Yaroslav.CH, в любом случае, огромное Вам спасибо за Ваше участие и столь быстрые ответы.

    Удачи Вам и всего наилучшего!! :о)

    ReplyReply
  62. @ Владимир: тогда действительно проблема и нужно искать конкретный IP в логах. Запросов от него будет, в принципе, столько же, сколько от обычного пользователя — он же просто тянет контент. Можно проверить на новой, только что опубликованной статье или поискать четко по совпадению времени — когда Вы сами обновляете страницу на чужом сайте. Думаю, что не так уж много будет IPшников в этот период времени.

    Да не за что, взаимно! :)

    ReplyReply
  63. Опять у меня что-то не выходит.
    Есть еще пару ссылок, аля http : // sheko.ru/wp-trackback.php?p= плюс какое-то число
    так как Вы написали — все отлично работает для первой ссылки, если потом нужно сделать еще редирект, например для http : // sheko.ru/wp-trackback.php?p=439, пишу после предыдущего кода еще

     
    RewriteCond %{QUERY_STRING} ^p=439$
    RewriteRule ^wp-trackback\.php$ http : // sheko.ru/2009/11/chto-takoe-vektornaya-grafika.html [L,R=301]
    

    а редиректит почему-то совсем на другую страницу:) , а может еще в конце ссылки приписать «p=439»

    Это для этой ссылки, а для другой ссылки срабатывает… ничего не понимаю… Подскажите, в чем тут дело?

    ReplyReply
  64. @ Dasha: честно говоря, не совсем ясно — что именно происходит.

    а редиректит почему-то совсем на другую страницу:)

    Что пишете в .htaccess, куда должно редиректить и куда редиректит в результате?

    Общий код должен выглядеть так:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^p=264$
    RewriteRule ^wp-trackback\.php$ http: // www.proofsite.com.ua/article-2242.html? [L,R=301]
    RewriteCond %{QUERY_STRING} ^p=439$
    RewriteRule ^wp-trackback\.php$ http: // www.proofsite.com.ua/article-2242.html? [L,R=301]
    

    Без пробелов в ссылках, конечно и URL не обязательно должен быть одинаковым.

    ReplyReply
  65. а у меня так

     
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^p=264$
    RewriteRule ^wp-trackback\.php$ http : // sheko.ru/2009/11/chto-takoe-vektornaya-grafika.html [L,R=301]
    RewriteCond %{QUERY_STRING} ^p=675$
    RewriteRule ^wp-trackback\.php$ http : // sheko.ru/uroki-adobe-illustrator [L,R=301]
    

    теперь посмотрела что и первый и второй редиректы направляют со страниц
    http : //sheko.ru/wp-trackback.php?p=264
    http : //sheko.ru/wp-trackback.php?p=675
    соответственно, на совсем другие..

    первый редирект направил один раз на страницу http : // sheko.ru/2009/11/kak-pravilno-sohranit-eps-8-dlya-mikrostokov.html, а второй раз http : // sheko.ru/2009/11/chto-takoe-vektornaya-grafika.html?p=264 (т.е. дописал ?p=264 в конце)

    второй редирект направляет на http : // sheko.ru/2010/03/risuem-meshok-s-pomoshhyu-gradient-mesh-uroki-adobe-illustrator.html

    Вы поставили в конце строки с нужным адресом страницы «?» — это обязательно?

    ReplyReply
  66. @ Dasha: Да, «?» в конце обязательно, это как раз и убирает «?p=264» в конце.

    Во-первых, поставьте «?» в конце, а во-вторых — добавьте «.html» во второй URL. А, посмотрел — это у вас раздел. Тогда не добавляйте.

    В итоге должно получиться вот так и это должно работать:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^p=264$
    RewriteRule ^wp-trackback\.php$ http: // sheko.ru/2009/11/chto-takoe-vektornaya-grafika.html? [L,R=301]
    RewriteCond %{QUERY_STRING} ^p=675$
    RewriteRule ^wp-trackback\.php$ http: // sheko.ru/uroki-adobe-illustrator? [L,R=301]
    

    Опять же — без пробелов в URL.

    ReplyReply
  67. Спасибо, видимо дело в «?» — поставила и все четко работает, вроде:)

    ReplyReply
  68. единственно что я делал на хостинге с этим файлом .htaccess это меня название для ЧПУ ссылок)

    ReplyReply
  69. 14-й пункт может не работать если статика на сервере отдается nginx-ом. Нужно будет вручную исключать расширения из списка. Сталкивался с этим когда оптимизировал свой блог.

    ReplyReply
  70. Спасибо за статью!!!

    Может кто-нибудь знает решение проблемы — на сайте много страниц типа:

    http://www.site.ru/present.php?pid=flash&page=1
    http://www.site.ru/catalog.php?pid=pens&page=1

    у меня никак не выходит настроить через htaccess 301 редирект на эти же страницы но уже без page=1, т.е. соответственно на:

    http://www.site.ru/present.php?pid=flash
    http://www.site.ru/catalog.php?pid=pens

    ReplyReply
  71. Нигде не встречал такой подробной инфы по .htacess. Классно написано! Спасибо.

    ReplyReply
  72. Редиректы лучше объеденить в одно правило и описывать разные варианты с примерами регулярных выражений. Так более логично и понятнее будет

    ReplyReply
  73. Здравствуйте! Подскажите что делать, столкнулся с такой проблемой как: Ошибка 403. Доступ запрещен
    Доступ в эту папку запрещен администратором сайта или в папке нет индексного файла.

    Залил готовый сайт на хостинг с локального сервера, выдает ошибку Ошибка 403. Доступ запрещен.
    Думаю что проблема заключается в файле .htaccess! Что тока не перепробывал все равно выдает эту ошибку… Заранее благодарен!

    ReplyReply
  74. @ Artur: а чем тут можно помочь — ни сайта, ни содержимого htaccess Вы не показали.
    Самый простой вариант проверить — в htaccess проблема или нет: переименовать .htaccess в htaccess.txt и посмотреть на результат. Если ошибка сохранится, значит нужно обращаться к администратору сервера, если нет, то нужно проверять htaccess методом исключения правил.

    ReplyReply
  75. @ Yaroslav.CH:
    Мой сайт: http://www.zapsibdomstoi.ru
    Пробовал переименовать, ничего из этого не выходит ошибка сохраняется(
    Сейчас обнаружил такую вешь! Если с главной страницы если вводить логин и пароль(к примеру http://www.zapsibdomstroi.ru) пишет что ошибка 403, а если кликнуть допустим на вкладку О компании к примеру(http://www.zapsibdomstroi.ru/node/30) и там ввести свои данные то успешно можно войти на сайт.
    В чем проблема понять никак не могу….
    Извиняюсь за свою тупость, это мой первый сайт и в сайтостроении я мало чего понимаю.

    ReplyReply
  76. @ Artur: судя по ситуации, htaccess и сервер тут не причем — сайт-то у Вас нормально грузится. И ошибка это не 403 (почитайте описание серверных ошибок — например тут), а просто запрет на доступ к информации со стороны CMS.

    Если бы это была ошибка сервера, то сайт бы вообще не отображался — вместо страницы была бы надпись типа «Error 403 — Access Restricted». А тут Вам CMS говорит об отсутствии доступа — это абсолютно разные вещи.

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

    Если с главной страницы если вводить логин и пароль пишет что ошибка 403, а если кликнуть допустим на вкладку О компании к примеру и там ввести свои данные то успешно можно войти на сайт.

    Вот это подтверждает подозрения — я так понимаю, что под правами администратора Вы нормально видите всю страницу, а под правами пользователя (без авторизации), получаете «Доступ запрещен».

    ReplyReply
  77. @ Yaroslav.CH:
    Спасибо за информацию! Проверил права доступа — все что нужно разрешено.

    Дело в том что с главной страницы к примеру (site.ru) невозможно зайти ни мне как «админу» ни уже «зарегистрированному пользователю».

    Опишу более подробно: На главной странице можно зарегистрироваться, на почтовый ящик придет письмо, кликаем на ссылку в письме и попадаем на сайт(сайт работает все хорошо, никаких проблем). Но если нажать кнопку выход, то потом нельзя зайти с главной страницы (site.ru), зайти можно, как я уже говорил, только если кликнуть на (О компании, или Портфолио/… и прочие вкладки), т.е. адрес будет таким site.ru/node/30. Там вводим свои данные и тогда только можно зайти на сайт как зарегистрированному пользователю так и мне как Админу. Вот такая ситуация…

    ReplyReply
  78. @ Artur: если права точно в норме, тогда нужно смотреть в сторону настройки ЧПУ, возможно проблема где-то там.

    Это уже тонкости настройки отдельно взятой CMS и создания отдельно взятого сайта — в таких случая ставить «диагноз по фотографии» крайне тяжело.

    Обратитесь к разработчику сайта, опишите ему проблему и, думаю, он сможет Вам помочь.

    ReplyReply
  79. У меня есть сайт temp21.kiev.ua
    хочу сделать ЧПУ
    temp21.kiev.ua/?chp=obyav&rub=1 — так выглядит раздел Продам
    хочу сделать temp21.kiev.ua/prodam — как это можно сделать?
    Заранее спасибо

    ReplyReply
  80. Уважаемый Yaroslav.CH,
    подскажите как запретить пользователям скачивать файлы с сайта вводом пути к файлу в адресной строке браузера. Например чтобы при вводе mysite.ru/files/file.txt происходил редирект на главную.
    Заранее спасибо.

    ReplyReply
  81. @ Yaroslav.CH:
    Воспользовался, но выскочила следующая ошибка
    Веб-страница temp21.kiev.ua/index.php?chp=index.php привела к избыточному количеству переадресаций. Чтобы устранить эту проблему, можно удалить файлы cookie для этого сайта или разрешить файлы cookie независимых поставщиков. Если проблема сохранится, возможно, она связана с конфигурацией сервера, а не с вашим компьютером. ((((

    ReplyReply
  82. @ дима: значит не совсем корректно воспользовались. Обратите внимание, что адрес содержит ненужную часть: «?chp=index.php».

    ReplyReply
  83. Спасибо за статью. Почему то у меня при вставке кода «запрещаем загрузку файлов с внешних сайтов» ничего не меняется — картинка загружается. Уже второй раз пробую установить.

    ReplyReply
  84. 1. Запрещаем загрузку файлов с внешних сайтов
    Вам надоели люди, которые размещают картинки, опубликованные на вашем сайте — на своих ресурсах, тем самым расходуя ваш траффик и создавая ненужную нагрузку на ваш хостинг? Данный код, размещенный в конца вашего файла .htaccess, позволит предотвратить загрузку ваших изображений — сторонними сайтами

    А я сама на форумах использую фото со своего сайта. Это оказывается плохо? Вы для меня открытие сделали. Статья познавательная, но многое для меня — темный лес. Буду изучать.

    ReplyReply
  85. @ mccats:

    А я сама на форумах использую фото со своего сайта. Это оказывается плохо?

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

    При использовании этого кода, вместо оригинальной картинки будет показана «заглушка». Но учитывайте, что если Вы уже размещали картинки со своего сервера на других сайтах, то если Вы используете этот код — все изображения будут заменены на «заглушку».

    ReplyReply
  86. Спасибо! Очень полезная информация.

    ReplyReply
  87. МНОГИЕ из методов довольно сильно нагружают сервер, хотя это намного лучше чем использование плагинов выполняющих аналогичную функцию. Не знаю на счёт других CMS, но в случае с WP достаточно создать пустой файл типа index.html в папке. В общем за статью спасибо, мне кажется очень полезной..

    ReplyReply
  88. ох, это просто клад. Настроил блокировку ипов и кое какую защиту повысил, вроде нагрузка не увеличилась

    ReplyReply
  89. Спасибо за примеры!

    Может быть подскажете как сделать перенаправление вида:

    someword.site.ru/ -> site.ru/someword.html

    но так, чтобы в строке адреса в браузере клиента по прежнему оставался адрес someword.site.ru/ Т.е. чтобы фактически клиент получал данные страницы /someword.html при этом его явно на нее не перенаправляло.

    Имею в наработке пока лишь такой пример:


    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.ru$ [NC]
    RewriteCond %{HTTP_HOST} !^www\.site\.ru$ [NC]
    RewriteRule ^(.*)$ http://site\.ru/%1\.html [NC,L]

    но он не дает желаемого результата. Явное перенаправление все же происходит на страницу /someword.html

    ReplyReply
  90. @ Max: честно говоря, никогда не сталкивался с возможностью реализации подобного с помощью htaccess — только через iframe.

    ReplyReply
  91. Здравствуйте.
    Сначала нарушу немного Ваши правила публикации сказав спасибо. Сохранил эту страницу в закладки когда то и вот снова вернулся к ней.
    В тему статьи добавлю:
    если ваши страницы работают с расширением .php а вы хотите чтобы были .html но с работоспособностью .php то в .htaccess нужно добавить вот такую строчку AddType application/x-httpd-php php phhtml html htm и все страници сохранять уже с разрешением html а не php.
    Эта строчка будет приказывать серверу читать и обрабатывать html как php, страница остается html ))
    Сам эту функцию проверял и на одном из сайтов это использую.
    А у меня по статье еще вопрос, так какие правила имеет смысл взять за использование как «должно быть» и «без гвоздей»? а то я все бы втулил))
    Также есть вопрос по паролированию, не совсем понял. Например я закрыл паролем доступ в админ часть(ну где админ логин и пароль вводит) а кто то просто ввел пароль и получается я тоже немогу туда попасть? как же быть?
    Не судите строго я всему только учусь. Твитер только на днях завел.

    ReplyReply
  92. @Ruliks: спасибо за комментарий и правило — добавил его в статью со ссылкой на Ваш блог.

    А у меня по статье еще вопрос, так какие правила имеет смысл взять за использование как «должно быть» и «без гвоздей»?

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

    Например я закрыл паролем доступ в админ часть (ну где админ логин и пароль вводит) а кто то просто ввел пароль и получается я тоже немогу туда попасть? как же быть?

    Не совсем понятен вопрос — в каком смысле «кто-то просто ввел пароль и я не могу попасть?». Откуда этот «кто-то» взялся и куда именно он ввел пароль?

    ReplyReply
  93. @Yaroslav.CH:
    Днем я написал коряво и пришлось видать удалить, теперь пишу более менее правильно
    правило 12 цитата» В нашем примере файл с паролями доступа лежит в корневой директории сайта и называется .htpasswd. Директория указывается от корня сервера и если путь будет некорректным — Apache, не получив доступа к файлу, откажет в доступе к папке любому пользователю — в том чилсе и тому, который ввел правильную пару логин:пароль.»
    Так вот собственно и вопрос, если я запаролю страничку входа то кто то попробовав ввести пароль заблокирует и для меня доступ или как?
    PS: Я напросился в контакты в аське с предложением общаться, неинтересно с нубом общение? Без обид.

    ReplyReply
  94. @Ruliks:

    если я запаролю страничку входа то кто то попробовав ввести пароль заблокирует и для меня доступ или как?

    Нет, никакой блокировки не будет. Имеется ввиду следующее — если Apache не находит корректный путь к файлу .htpasswd, то он не пустит в папку никого — ни того, кто знает пароль, ни того, кто не знает. По той простой причине, что сам Apache (не имея доступа к файлу) не знает — правильные пароли или нет — они же хранятся именно в .htpasswd, а доступа к нему нет.

    По-сути, достаточно корректной сформировать и разместить htpasswd и все будет ок. Тот, кто не знает пароль — просто не получит авторизацию. И все.

    PS: Я напросился в контакты в аське с предложением общаться, неинтересно с нубом общение? Без обид.

    Да без проблем — авторизацию же я дал :) Просто очень много работы, если есть что обсудить — спрашивайте, по мере возможности отвечу.

    ReplyReply
  95. Ахринительная статья!
    Спасибо)))) Статья добавил в закладки)))

    ReplyReply
  96. Дело в том что многие из представленных директив .htaccess на разных серверах выглядят по разному. Например, разрешение исполнения кода PHP в файлах HTML сильно разнится на различных хостингах. Потому, когда нужны какие-то манипуляции с этим файлом, лучше спросить у хостера, как именно лучше сделать! Моё мнение…

    ReplyReply
  97. @Вадим Чоповский:

    на разных серверах выглядят по разному.

    Честно говоря, не совсем понимаю, что Вы имеете ввиду?

    разрешение исполнения кода PHP в файлах HTML сильно разнится на различных хостингах.

    Такие разрешения или есть, или их нет — или можно выполнять PHP код или нет. Либо мы говорим о разных вещах, либо я никогда не сталкивался с хостингом, у которого есть какая-то вариативность в выполнении этих директив.

    ReplyReply
  98. Не могу убрать дубли некоторых страниц и удалить «category» и другие папки из URL.
    Вот мой .htaccess:

    SecFilterInheritance Off

    # BEGIN WPSuperCache
    # END WPSuperCache

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.everydayolga.com$ [NC]
    RewriteRule ^(.*)$ everydayolga.com/$1 [R=301,L]

    RewriteRule ^category/(.+)$ http://www.everydayolga.com/$1 [R=301,L]

    # END WordPress

    Из-за этих дублей у меня очень много внутренних ссылок, которые проверяю здесь dinews.ru/seo/?url=http%3A%2F%2Feverydayolga.com Целых 291 ссылка!!!

    Подскажите пожалуйста, что изменить!

    ReplyReply
  99. Спасибо автору за статью!
    У меня есть вопрос. Можно ли с помощью изменений и прописываний в файле .htaccess загрузку ещё одного сайта с моего.

    Что у меня получается сейчас. Захожу на мой сайт, а там ещё открывается одна страница- типа вроде рекламы. Реклама со стороннего сайта и ссылка с окном на их сайт.

    Я хочу убрать это, чтоб открывался сайт без этого всплывающего окна на другой ресурс.

    Как мне это сделать? Заранее благодарен за подсказку.

    Сайт allfortrader.net

    ReplyReply
  100. @Андрей: не совсем понятно — откуда взялся этот баннер? Если это внезапно появившаяся реклама, то нужно проверить на нежелательные скрипты. Если это условие хостинга, то в случае блокировки рекламы — они могут отказать в обслуживании.

    ReplyReply
  101. Ярослав, спасибо за ответ.
    Это мои партнеры. Я использую их информеры на своем сайте и продвигаю их услуги.

    Но меня этот баннер изрядно уже достал за год. хочу его убрать. Прописывал несколько правил в .htaccess не помогло.

    ReplyReply
  102. @Андрей: тогда нужно искать вызов этого окна в том коде, который был предоставлен партнерами, и убирать его. htaccess для этого не нужен.

    ReplyReply
  103. @Ольга: htaccess не имеет отношения к тем задачам, которые Вы хотите решить с дублями страниц.

    В сущности, эти вопросы уже множество раз рассматривались на форумах поддержки и в блогах о WordPress.

    Как минимум, посмотрите описание плагинов All in one Seo Pack, Platinum Seo Pack и документацию по robots.txt. Удалить «category» можно либо с помощью правила, описанного в этой статье, либо с помощью плагина Seo-Without-Category.

    ReplyReply
  104. Серьезный справочный материал по работе с .htaccess
    С сочтом объема информации. С переносом ссылок, из за коррекции разделов приходится изучать работу с этим файлом.
    Спасибо.

    ReplyReply
  105. здраствуйте. очень хороший пост, понравился тем что в отличие от других копий статьи вы еще добавили свои заметки, что доказывает, что вы знаете — в отличие от тех кто копирует просто так. Хотелось бы задать пару вопросов, надеюсь вы ответите на них.

    пункт 8 защита файлов — я скопировал и вставил в свой htaccess, и я думаю что он вроде должен не давать прочесть файл через строку браузера.
    так как сейчас я на виртуальном хосте денвер я стал проверять так: http://localhost/denwer/tools/draw/.htaccess и я смог прочитать код, почему так?
    И еще например у меня нету файла info.php люди могут узнать данные о php подключив свой, если да то как им запретить подключать свои файлы.

    ReplyReply
  106. @игорь:

    и я смог прочитать код, почему так?

    Сорри, проблема в том, что после порчи статьи WordPress-ом, я не совсем корректно восстановил это правило. Должно быть не:
    , а .
    Попробуйте еще раз.

    И еще например у меня нету файла info.php люди могут узнать данные о php подключив свой, если да то как им запретить подключать свои файлы.

    Не совсем понятно, что Вы имеете ввиду под понятием «подключать файлы»? Для того, чтобы выполнить скрипт, файл с ним нужно залить на сервер. Если у стороннего пользователя нет доступа, то сделать этого он не сможет.

    ReplyReply
  107. @Yaroslav.CH:

    Спасибо за скорый ответ.
    нет, не помогло, я еще поискал по интернету там скрипты такие же, наверно это из за denverа , когда открою сайт в интернете, еще раз проверю.

    Хотелось еще спросить как запретить скачивание файла jpg , например на render.ru там если захочешь скачать картинку, вместо нее скачиваеться php файл с хешем

    ReplyReply
  108. @игорь:

    наверно это из за denverа ,

    Тогда нужно проверять настройки самого сервера.

    как запретить скачивание файла jpg , например на render.ru

    Честно говоря, никогда такого не делал, но AFAIR, это решается не правилами .htaccess, а отдельными скриптами, которые обрабатывают запрос на скачивание.

    ReplyReply
  109. хотелось бы у вас еще 1 спросить ,
    в номере 19 в этой строчке как я понял указана страница загружающая на сервер сообщение RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
    ,а что делать если у меня аж 4 таких, как их указать.

    Второй вопрос , просто интересуюсь, а вы не используете кеширование файлов? а то мне пришлось опять загружать эту страницу заного.

    И еще будет продолжение про .htaccess?
    например про мне вот приходилось искать как вставить больше 1 страницы для запрета просмотра, на форуме подсказали что так надо.

    order allow,deny
    deny from all

    тут получаеться что 2 страницы str.php и index.php запрещены к просмотру

    и еще нечего не расказано про php_flag хотелось бы почитать.

    ReplyReply
  110. @игорь:

    а что делать если у меня аж 4 таких, как их указать.

    4 чего? Это правило запрещает обращение к wp-comments-post.php без реферера.

    а вы не используете кеширование файлов? а то мне пришлось опять загружать эту страницу заного.

    Кеширование используется — с помощью плагина Quick Cache. Насчет загружать страницу заново — кеш обновляется.

    И еще будет продолжение про .htaccess?

    Есть довольно много тем, на которые я хотел бы написать статьи :) Если получится, то будет и продолжение про .htaccess.

    ReplyReply
  111. @Yaroslav.CH:

    у меня 4 страницы для создание комментариев,
    create_comm.php ,create_comm2.php,create_comm3.php,create_comm4.php

    ReplyReply
  112. @игорь: а зачем такое количество страниц?

    В общем-то, особой разницы нет — нужно прописать 4 правила.

    ReplyReply
  113. Здравствуйте, Ярослав! Мы с мужем создаём сайт и,скажу честно, в программировании мы ни бум-бум… Если честно,я просто «слизала» директивы,которые Вы выложили… (нигде не могла найти что-то подобное…восхищаюсь Вами… Вы — Большой Умничка… Спасибо Вам!)У меня вопрос: «Если сайт ещё в начальной стадии, я выбираю директивы, которые нужны на данный момент. Могу ли я в дальнейшем,по мере разрастания сайта, заводить в этот же файл следующие нужные директивы?»… И ещё… На одном из сайтов было выделено:»Если вы хотите,чтобы mod_rewrite работал, необходимо в заголовок файла .htaccess добавить:

    Options +SymLinksIfOwnerMatch

    Вопрос:»Это обязательное условие? И сочетается ли эта директива с Вашими?»

    ReplyReply
  114. кстати татьяна возможно самый первый код может не работать у вас , просто я столкнулся с этой ситуацией.

    1 Запрещаем загрузку файлов с внешних сайтов

    чтобы проверить ето ,просто создайте страничку html и вставьте туда картинку с ссылкой картинки с вашего сайта.
    если картинку показывает ,то этот код не работает.

    у меня заработало с этим кодом, хотя тут нету картинки stop_stealing_bandwidth.gif ,но не это же главное =)

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http://(www.)?draw-art.ru(/)?
    RewriteCond %{HTTP_REFERER} !^http://(.*).draw-art.ru(/)?
    RewriteRule .*.(gif|jpg|jpeg|png)$ – [F]

    ReplyReply
  115. Привет.
    По п.6. еще можно поправку внести.
    Я использовал данное правило, но хостинг это не воспринимал и спамер пробивался каждый раз, но добавив Order Allow,Deny вначале все заработало ;)

    ReplyReply
  116. Применение директивы сохранит индексацию картинок?:
    .htaccess, позволит предотвратить загрузку ваших изображений — сторонними сайтами.
    Options +FollowSymlinks
    #Запрещаем загрузку файлов с внешних сайтов
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc]
    RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/stop_stealing_bandwidth.gif%5Bnc%5D

    ReplyReply
  117. На своем сайте поставил функцию наложения своих водяных знаков на картинки, так что те кто скачивает у меня изображения — получает их с надписью моего сайта, своего рода реклама!

    ReplyReply
  118. Ты бы ещё написал, с чего должен начинаться файл и чем заканчиваться. А между обязательными началом/концом, дескать, вы можете вставлять те или другие правила.

    Вот, к примеру, я сейчас вожусь с неработающим плагом (в теме про WP Time Machine писала): на демо-варианте шаблона работает прекрасно, сто́ит накатить сверху свой блог, перестаёт работать.
    И подумала, значить, а вдруг дело в .htaccess? На форуме поддержки шаблонов кто-то в связи с чем-то такую мысль высказал: проблема-де была в файле .htaccess.

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

    А то, помню, так же мучилась с function.php: неправильно закрытый файл или не там поставленная точка и ку-ку :)

    ReplyReply
  119. @jack.sun: Имхо, достаточно геморно в каждую папку забрасывать файл index.html, гораздо проще использовать для этого .htaccess Options All -Indexes

    ReplyReply
  120. Подскажите, как сделать редирект пользователей с браузерами IE всех версий на другую страницу (index2.html) ?

    ReplyReply
  121. Спасибо огромное за статью, думаю надо поэкспериментировать, а так как я с html кодами плохо знаком, то Ваши советы будут как никогда к стати!

    ReplyReply
  122. Спасибо за хорошую работу!!! Знал о важности файла .htaccess.
    Но руки не доходили до его правки.
    После просмотра материала думаю заняться его правкой…

    P.S. хотя где-то читал что перевод на Gzip плохо влияет не SEO

    ReplyReply
  123. Возможни ли сделать через файл: .htaccess такую фишку.

    Допустим у меня на сайте есть папка с картинками:

    http://test.net/images/

    в ней лежат допустим 3 картинки:
    1.png
    2.png
    Default.png

    ——

    допустим если кто-то будет вызывать вот такую картинку:

    http://test.net/images/3.png
    то ему открывалась картинка

    http://test.net/images/Default.png

    ReplyReply
  124. Да, недооцениваем этот файл. Обычно 301 редирект, перекидка с www на «без» и еще по мелочи. Для меня оказались находкой пункты 1, 5, 11. П. 14 будет работать, если у пользователя не включено: «Очистка КЭШа при загрузке». Кстати, опять гуляет легенда, что найдена защита от копирования (воровства) контента, что то вроде «can not copy» ….Не нагромождение скриптов, а один файлик, закрытый паролем (8-?). Это не про .htaccess файл?

    ReplyReply
  125. Дам, прочитал и понял, что срочно надо идти на хостинг и редактировать свой файл. Спасибо автору, действительно нужная статья. Буду советовать своим друзьям. Для меня это вообще на ходка так как я новичок в этом деле, а получить столько полезных советов в одной статье, очень кстати.

    ReplyReply
  126. Убойная статья. Я только и делаю что пользуюсь этой информацией. 301 редирект настроил. Редиректы со старых категорий на новые.
    В общем этот Блог настоящая находка!

    ReplyReply
  127. Спасибо! Очень было интересно почитать про .htaccess, частенько использую его для настройки зеркал сайта.

    ReplyReply
  128. Отличная статья! Много нового узнал, только вот один вопрос.
    У меня на сайте 2 файла: index.html и applet.jar. При посещении пользователем моего сайта index.html запускает апплет и все прекрасно. Но проблема в том, что любой может скачать файл applet.jar по адресу http://www.mysite.com/applet.jar и получить доступ к исходному коду апплета. Я в файле .htaccess запредил доступ к апплету путем:

    Files «applet.jar»
    Order Deny,Allow
    Deny from all
    /Files

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

    ReplyReply
  129. @Мое имя: насколько мне известно, нет никакой возможности закрыть файлы от просмотра с помощью .htaccess.

    Как вариант, Вы можете использовать методики обфускации кода.

    ReplyReply
  130. Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^moysait\.com.ua\$ [NC]
    RewriteRule ^(.*)$ http://www.moysait.com.ua/$1 [R=301,L]

    Подскажите пожалуйста как правильно прописать com.ua в третей строчке

    ReplyReply
  131. Здравствуйте!

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

    пример:

    было:
    сайт.ру/ньюс/статья1
    сайт.ру/ньюс/статья2
    сайт.ру/ньюс/статья3
    стало:
    сайт.ру/новости/статья1
    сайт.ру/новости/статья2
    сайт.ру/новости/статья3

    т.е. часть статей, которые были в старой структуре и хорошо видные в поиске стали выдавать 404 ошибку.

    хочу исправить ситуацию с помощью 301 редиректа.

    просьба подсказать код, пригодный при смене части url
    спасибо заранее!

    ReplyReply
  132. @Denis: если я правильно понимаю задачу, то 4-е правило подходит полностью. В данном случае «d» и «r» — это и есть: «ньюс» и «новости».

    ReplyReply
  133. @Yaroslav.CH:

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

    #Настраиваем SEO-Friendly 301 Redirect
    Redirect 301 /d/file.html http://www.domainname.com/r/file.html

    а какой должен быть код-маска, если статей много (видаа file1, file2, file345),
    а разделов всего два, старый и новый?
    иначе надо в .htaccess прописывать все статьи вручную, а это будет перегружать сервер и снижать быстродействие.

    ReplyReply
  134. @Denis:

    да, на данный момент разделов, для которых требуются изменения всего два.

    я вроде бы уже решил проблему, прописав без всяких формул и масок

    Redirect 301 /razdel1/razdel2/ http://www.domainname.com/razdel3/

    и все заработало :)
    спасибо за помогательную статью и ответы!

    ReplyReply
  135. Помогите пожалуйста.
    У меня ссылка была в виде:
    /сайт.ru/content/название товара, а теперь сайт.ru/новая папка/название товара.html

    тоесть поменялась и папка и расширение страницы, а название товара осталось прежним.

    Делал редирект в виде:
    RewriteRule ^content/(.+)$ http://сайт.ru/новая папка/$1.html [R=301,L]
    И не работает ;(
    В чем проблема?

    ReplyReply
  136. Может поможетете, если кто-то знает ответ?
    Есть каталог

    http://сайт.ru/catalog.php/(куча разных старниц)
    и чтобы перекидывало с любового введенного адреса, который начинается с catalog.php на:

    http://сайт.ru/products/10
    и ничего больше не дописывало. тоесть чтобы просто редиректило на директорию.

    Пробовал через RedirectMatch ^catalog\.php(.+) http://сайт.ru/products/10
    RewriteRule ^catalog.php/(.+)$ http://сайт.ru/products/10$1 [R=301,L]

    Так не работает ((

    ReplyReply
  137. Вопрос по файлу .htaccess:

    Имеется сайт http://www.сайт.ru
    в директории http://www.сайт.ru/dir — еще один сайт.
    в директории http://www.сайт.ru/dir/forum — еще один сайт (форум).

    Возможно ли используя файл или файлы .htaccess (имеющихся сайтов), сделать чтобы форум http://www.сайт.ru/dir/forum работал по адресу несуществующей директории http://www.сайт.ru/forum

    ReplyReply
  138. Есть такой плагин Pretty link, удобная штука, можно и РНР скрипты использовать — более сложные, более простые. Но если к примеру всего пара-тройка ссылок, которые хочется спрятать, либо сделать короткими, делаю так.
    1. Допустим, у нас есть урл с рефкой — хттп://сайт_партнера.ру/товар/мой_ID_бла-бла-бла
    2. Создем пустую папку в корне, например «goto«, кладем туда .htaccess со строкой:
    redirect /goto/товар хттп://сайт_партнера.ру/товар/мой_ID_бла-бла-бла
    3. Теперь можно ставить красивую ссылку — хттп://ваш_сайт.ру/goto/товар

    ReplyReply
  139. Большое спасибо за статью. Не знал, что .htaccess предоставляет столько возможностей. Особенно понадобилось правило запрета использования файлов другими сайтами.

    ReplyReply
  140. А кто знает как убрать вопросительный знака «?» и все что после него путем хтаксеса? Например domain.ru/? domain.ru/index.php? — на главную, а domain.ru/page.html?fdsgfd на page.html

    Не знаю опубликовалось ли-если да-админы удалите дубль поста

    ReplyReply
  141. Здравствуйте, ситуация следующая, после регистрации на моем хостинге главный домен привязывается к корневой папке «public_html» и «указать» его на подпапку нельзя. Это неудобно, ведь все файлы сайта лежат в корне, а новые сайты будут располагаться в директориях основного. Посоветовали прописать правила через .htaccess, но из найденного описания я так и не поняла, как это сделать. Объясните подробно пожалуйста, спасибо!

    ReplyReply
  142. Скажите, а влияет ли содержимое этого файла .htaccess на индексирование сайта Яндексом?

    Недавно пропали все страницы из поиска и я ищу причину.
    А обратила внимание на файл из-за того, что установила плагин, которому разрешила вносить изменения в файл .htaccess.

    Прошлась по вашим рекомендациям, вроде все правильно написано у меня в файле, но не уверена. Спасибо.

    ReplyReply
  143. @Гузель Мирзаянова: все зависит от того содержимого, которое Вы внесли в файл. Если, к примеру, запретить индексацию роботом Яндекса, то само собой, что это повлияет на результаты.

    ReplyReply
  144. Ухты! Как много интересной и полезной информации и это не смотря на дату публикации поста. Остается только добавить в избраное и при надобности ходиь сюда за инфой как и что сделать)

    ReplyReply
  145. а где его искать этот .htaccess загрузил плагин wp-dbmanager и там мне говорит перекинь этот .htaccess из одной папки в другую. а я его не нахожу.

    ReplyReply
  146. @алик: если файла .htaccess нет, Вы можете его просто создать как обычный текстовый файл (.htacess.txt), а после — убрать расширение (.txt).

    ReplyReply
  147. Спасибо пригодилось. Особенно установка перенаправления.

    ReplyReply
  148. Достали спамеры! Я уже начала коллекционировать их адреса, к примеру, много мусора идет вот с этих IP:
    176.8.91.244
    5.254.179.153
    37.78.1.168
    188.43.111.237
    213.129.108.217
    А как мне правильно вписать код в .htaccess-файл?
    У вас так написано:
    #Создаем черный список IP адресов
    allow from all
    deny from 145.186.14.122
    deny from 124.15.
    А мне как написать, я не понимаю, что это такое allow from all?
    То есть перед каждым IP надо поставить это — deny from?
    Вы можете прям кусочек написать, чтобы дел было — скопировать и вставить?

    ReplyReply
  149. А вот такой вопрос:
    настраивал редирект сайта, чтобы склеить имена с www и без оного
    таким образом
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    В принципе всё работает, кроме одного единственного
    если заходить на http://www.site.com/ то вместо http://site.com/
    он ещё полностью распишет всю пхп строку, которая следует далее
    http://site.com/index.php?content=catalog&id=
    В упор не пойму как от этого избавиться :(

    ReplyReply
  150. @Елена Олейникова:

    Собственно, значение слов «allow» и «deny» можно посмотреть даже в словаре :)

    «allow from all» — разрешить для всех.
    «deny from [IP]» — запретить для конкретного адреса.

    Соответственно, эта конструкция разрешает доступ для всех, кроме указанного IP.

    Общий код:

    #Запрещаем доступ для всех, кроме указанных IP-адресов
    ErrorDocument 403 http://www.domainname.com
    Order deny,allow
    Allow from all
    Deny from 176.8.91.244
    Deny from 5.254.179.153

    ну и дальше весь перечень Ваших адресов.

    ReplyReply
  151. Спасибо! Мне очень понравился 5 вариант. То что искал! А вот над 9 вариантом надо подумать. Вот смотрите, если я его применю с моими файлами ни чего не случится? А если код сломается? Я просто не знаю по какому принципу он сжимает файлы. А вот 15 вариант я использую. Он более менее подходит. И 18 пункт тоже не понял. А для чего это делать? У меня на блоге человек сразу подписывается на фид по емайл и получает обновления на почту. RSS зарегистрировал на ФБ. Для чего использовать этот пункт, можете пояснить поподробнее??? За 21 вариант спасибо! Буду пробовать, надеюсь сайт не вырубит)) И то что искал не нашел. Пожалуйста, можете добавить код для .htaccess, который склеивает имя домена с www и без него в один домен, например без www, или с ним. Я использую домен без www. Хотелось бы знать как показать поисковикам, что все ссылки с www ведущие на меня это обычные без www ссылки.

    ReplyReply
  152. @Олег Астанин:

    Вот смотрите, если я его применю с моими файлами ни чего не случится?

    Если примените правильно — нет.

    А если код сломается?

    Код от этого не сломается, т.к. обработка сжатия происходит «на лету», но это не отменяет необходимость регулярных бекапов.

    И 18 пункт тоже не понял. А для чего это делать?

    Это правило нужно для тех, кто использует RSS-ленту. В случае подписки на e-mail в нем нет необходимости.

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

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]
    RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

    site.com нужно поменять на Ваш домен!

    ReplyReply
  153. Спасибо автору.

    Для меня очень полезная информация, это просто удача что я нашёл Вашу статью о файле .htaccess. Теперь ваш блог у меня в закладках.

    ReplyReply
  154. Здравствуйте.

    Есть ли возможность с помощью htaccess, php или скрипта переадресовать одну внешнюю ссылку на другую? Наподобие 301 редиректа htaccess, только перенаправить надо переход не по внутренний ссылке на внешний адрес, а переход по строго определённой внешней ссылке на другой внешний адрес.

    Буду очень признателен за подсказку.

    ReplyReply
  155. Есть хитрецы использующие чужие сайты как файловое хранилище для своих фотографий. Например размещая фотки на форумах и проч.., ставя лишь ссылку на картинку. Смотрят гдето, а нагружается ваш сервер:
    Нашел такую тему:

    # Запретит использования прямых ссылок на ваши картинки
    RewriteCond %{HTTP_REFERER} !^$
    # Дальше список разрешенных доменов
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sitename.ru.*$ [NC]

    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sitename.ru:80.*$ [NC]
    # IP сайта (домена)
    RewriteCond %{HTTP_REFERER} !^http(s)?://111.111.111.111.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://111.111.111.111:80.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC]
    # RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?домен_дружественного сайта.ru [NC]

    RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
    # Формат файлов, на которые установлена защита
    # Выводим ошибку 403
    # RewriteRule \.(jpe?g|bmp|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip|pdf|txt|doc|flv|mp3|mp4)$ — [NC,F,L]
    # или показывает спецрисунок вместо указанного
    RewriteRule .*\.(jpe?g|bmp|gif|png)$ files/images/nohotlink.jpg [NC,L]

    ****************************
    В итоге хитрецам достанется ошибка 403 (Доступ запрещен)

    ReplyReply
  156. как в .htaccess прописать чтоб выполнялся сначала php файл а потом загружалась нужная страница сайта (та котораую я запрсил). мне нужно для ведения логов статистики посещаемости сайта так как хостер не предоставляет такую возможность

    ReplyReply
  157. Здравствуйте… меня волнует (ErrorDocument 404 403 401 500) если я перенаправляю на главную страницу Index — хорошо ли это? и как эти команды отразятся на индексации сайта яндексом (бывали случаи, когда робот Яндекса не видел все страницы кроме главной)…

    ReplyReply
  158. @© Yaroslav.CH:

    Признаюсь честно, совершенный новичок в wp и не знаю php. Но пришлось написать с нуля (сайты делать умею) сначала тему, потом и магазин поднять на wp. VPS муж настраивал.

    Долго искала как перенаправить со старой сссылки на новую. — Старый магазин не работает. И ссылка на один из фрибисов была не правильная.

    Вынесите отдельно о простом редиректе с старого URl на новый. Очень может ещё кому-то понадобиться.

    И большое спасибо за статью. Очень полезная!

    ReplyReply
  159. @nick: а зачем такие сложности? Поставьте Google Analytics или Яндекс Метрику и собирайте статистику.

    ReplyReply
  160. Говорят если запретить, загрузку картинок как в первом варианте , то и у поисков а поиске тоже картинки не будут отображаться , только то изображение что установлено, поэтому я в раздумьях над этим вопросом . А так большинство правил довольно неплохо облегчает работу.

    ReplyReply
  161. Подскажите как быть с вопросительным знаком в начале урла.
    мне надо ссылку типа mysite.ru/?parent_id=711 перенаправить по новому адресу mysite.ru/novaya_ssylka

    ReplyReply
  162. Проблема. Когда я меняю через htaccess урл на чпу — кидает на папку которая лежит в корне сервера.

    Пример : есть урл — mysite.com/mobile/m_portfolio.php
    с помощью htaccess изменяю на mysite.com/portfolio

    Но ссылка ведет в папку portfolio в корне сайта а не на mysite.com/mobile/m_portfolio.php.

    Как можна решить даную проблему? (переименовать папку или изменить ссылку нельзя!)

    ReplyReply
  163. Недавно делала редирект некоторых страниц с вида aaa.html на без html.
    Ничего не придумала более, как сделать редирект 301 с одной страницы на другую, так как не нашла подобных примеров.
    Использовала вариант, примерно как у вас в 13 пункте руководства.

    А в целом чувствуется, что данное руководство — исчерпывающее!

    ReplyReply
  164. Я все не могла понять, как оставляются спам-комментарии. Посетителей нет, а спам каждый день удаляю. Теперь понятно. Заходят окольными путями. Кстати, такой информации я еще не встречала. Жалко, по IP не могу заблокировать. Беру статью в закладки. Спасибо.

    ReplyReply
  165. как всегда офигенная техническая статья, оценили всем отделом

    ReplyReply
  166. @Самандар:

    Аналогично, узнал много нового! Спасибо! Я раньше вообще как-то не уделял этому файлу должного внимания, но, наверное, все приходит с опытом!

    ReplyReply
  167. Некоторые вещи оказались интересными:) возьму на заметку:)

    ReplyReply
  168. Ребята помогите
    Уже 3 дня не могу удалить папку в URL
    Вот есть у меня например сайт
    http://localhost/newlifeprint/
    там есть ссылка вида q/%s.php
    тоесть я хочу что-бы под %s.php подставлялся id
    в итоге имеем что-то типа этого
    http://localhost/newlifeprint/q/1.php
    как удалить вот эту папку q
    т.е Я хочу что-бы был вид вот такой
    http://localhost/newlifeprint/1.php
    я вставил ваш код для удаления «category» из URL
    но у меня перебрасівает на страницу
    http://localhost/1.php
    без самого сайта /newlifeprint
    Помогите очень прошу

    ReplyReply
  169. Отличная подборка!
    Допишу пару правил, которыми сам пользуюсь.
    Сори если есть где-то в комментах, читал только статью.

    #Скрыть вывод ошибок — использую если сайт на требует php5.2 а на сервере php5.3 или выше и посыпались ошибки
    php_flag display_errors off

    # Добавляем Мим-тип ico Необходим если поисковики не видят фавикон
    AddType image/x-icon .ico

    # редирект index.html index.htm index.php на главную
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html|htm) HTTP/
    RewriteRule ^index.(php|html|htm)$ http://mydomen.com/ [R=301,L]

    # редирект на sitemap.xml Joomla компонет xmap
    RewriteCond %{REQUEST_URI} ^/sitemap.xml
    RewriteRule .* /index.php?option=com_xmap&view=xml&tmpl=component&id=1

    ReplyReply
  170. По работе часто приходится влезать в файл .htaccess, а именно настраивать редиректы для seo части. Статья отличная! Кстати по поводу переводных статей на блог — это просто суперский способ для обновления контента. Сам перевожу с многих бурж сайтов, и читателям нравится.

    ReplyReply
  171. 10. Добавляем срок жизни в заголовки
    Я конечно извиняюсь но что это значит? Как понять срок жизни заголовка?

    ReplyReply
  172. Здраствуйте, помогите если сможете… нужно устроить переадресацию со страниц типа:
    site.ru/cat/cat/tag/новое (где /cat/cat/ может иметь много вариаций, в зависимости от страници(типа: /cat1/cat2/ или /cat/ ) на которой этот «тег» выводится)
    на страници
    site.ru/component/tag/новое (/component/tag/ статично)

    это Джумла…Просто хочу убрать гребаные Дубли страниц в «Тегах»

    ReplyReply
  173. Защищаем определенный файл ? Если запретить свой файл htaccess, то доступ для меня не будет запрещен? Из панели управления хостинга я имею в виду

    ReplyReply
  174. @Надежда: через ftp — не будет, а через панель хостинга — зависит от хостера и того файлменеджера, который у него используется.

    ReplyReply
  175. @Yaroslav.CH:
    Спрошу у хостинга сейчас, спасибо за быстрый ответ, жаль только , что пришлось долго свой комментарий искать, почему сразу из вашей рассылки сразу не попадаю на свой комментарий, так было бы удобнее, извините если что то не то сказала

    Наверно я надоела вам уже, но пжста, поделитесь как сделать такие таблички с бегунком и чтобы содержимое копировалось из таблицы

    ReplyReply
  176. @Надежда:

    почему сразу из вашей рассылки сразу не попадаю на свой комментарий,

    Потом гляну в чем может быть дело, спасибо.

    как сделать такие таблички с бегунком и чтобы содержимое копировалось из таблицы

    Вы имеете ввиду — вывод кода? Это плагин SyntaxHighlighter.

    ReplyReply
  177. @Надежда: открываете настройки плагина: Настройки -> SyntaxHighlighter, и в конце страницы есть примеры использования. Выше них — расписаны параметры, которые можно добавлять.

    ReplyReply
  178. У меня постоянно какой-то хакер заливает в корень сайта файл с расширением html — index.htm и содержанием: «Hacked By Moroccan wolf ~ Dz Team»
    Что делать? Как запретить заливать любые файлы в корень сайта?

    ReplyReply
  179. @Elimelech: проблема у Вас не в том, что нужно запретить заливать файлы в корень, а в том, что у кого-то постороннего вообще есть доступ к Вашему серверу. А если доступ есть, то заливать будут все равно — как не запрещай, потому как любые Ваши запреты, имея доступ к серверу, можно легко снять. Поэтому ищите дырку, через которую получен доступ.

    ReplyReply
  180. Изменил нижнее подчеркивание на тире в адресах страниц, при переадресации страниц со старых
    Redirect 301 /bednie_office_rabotniki/ http://www.mysite.ru/bednie-office-rabotniki/

    страница получается с таким адресом
    mysite.ru/bednie-office-rabotniki/?page=bednie_office_rabotniki
    а должно быть
    mysite.ru/bednie-office-rabotniki/

    Вопрос, что надо прописать, чтобы избавиться от лишнего в адресе?

    ReplyReply
  181. 301 редирект для мультиязычного сайта на Joomla 3 c 303 редиректом
    Здравствуйте, уважаемые!

    Прошу помочь решить следующую насущную для мультиязычного сайта на Joomla 3 и, думаю, многих других CMS, проблему:
    При создании нескольких языковых версий сайта средствами мультиязычности самой CMS получается следующее:
    http://domain.ru -с русским языком
    http://domain.ru/ru/-русская версия сайта(является основным языком сайта)
    http://domain.ru/en/-английская версия сайта
    http://domain.ru/de/-немецкая версия сайта
    и если средствами Joomla 3 удалять префикс /ru/ из адресной строки, то срабатывает 303 редирект, что есть нехорошо, т.к. для SEO нужен 301 редирект.
    Если же не убирать префикс в настройках Joomla 3, то будет существовать domain.ru/ru/ и domain.ru с русским языком, т.е. дубли.
    Как посредством .htaccess убрать префикс /ru/, т.е. сделать 301 редирект с domain.ru/ru/ -> domain.ru и чтобы в последующем переключение языков на сайте было корректным.

    В течение 2-x недель поиска информации в интернете опробовал разные куски кода в htaccess, но рабочего варианта так и не нашел.
    Распишите, пожалуйста, подробно как решить эту проблему, т.к. с этим вопросом не могут справится куча народа, как в русскоязычном сегменте интернета, так и зарубежом, либо опишите другие возможные варианты решения. Если вам несложно, то вышлите мне решение на почту myhelpers@mail.ru , чтобы быстрее смог его реализовать.
    Если для кого-то это тривиально, то простите за незнание! :-)

    ReplyReply
  182. Здравствуйте! Не могу никак найти ответа на один вопрос, а вижу вы спец в .htaccess . У меня скрипт генерит реферальные ссылки типа site.net/1-reg.html причем попадает такая ссылка на страницу регистрации, а мне надо на главную, конечно при сохранении реферера. думаю вы понимаете 1 — это идентификатор реферера, там может быть любое число. Никак не могу создать правило чтоб ссылка такого вида переадресовалась сразу на главную. Надеюсь на вашу помощь. Благодарю заранее!

    ReplyReply
  183. Недавно прописал редиректы 301 и сайт упал. Залил старый .htaccess — толку не было, не помогло. В чём дело — ума не приложу. Пришлось делать бекап. На этом мой опыт с этим «волшебным» файлом пока что закончился :)

    ReplyReply
  184. Не работает правило 20, с помощью которого можно убрать *.php
    У меня nginx 1.8.0
    сделал для себя такой конфиг
    location / {
    rewrite ^/(([^/]+/)*[^.]+)$ /$1.php break;
    }

    Но почему то, запрашиваемый файл не интерприетируется php и скачивается браузером. есть какие либо варианты?

    ReplyReply
  185. Доброго дня!
    Потрібна Ваша допомога. Спробую пояснити, зробив новий сайт та залив на місце старого в результаті змінилась повністю структура сайту.
    Було: http: //domain.ua/info/opikyn.html
    Стало: http: //domain.ua/index.php/2015-06-18-06-41-13/prohrama-opiky,
    якби в даному випадку все зрозуміло пишемо
    Redirect 301 /info/opikyn.html http: //domain.ua/index.php/2015-06-18-06-41-13/prohrama-opiky
    і все повинно працювати.
    Але у випадку з новинами та фото вони не переносились на новий сайт, і на старому сайті були просто новини а на даному розділені на 5 категорії.
    Було:http: //domain.ua/news/a-115.html
    Стало: http: //domain.ua/index.php/for-visitors/novyny/osnovni
    http: //domain.ua/index.php/for-visitors/novyny/tvaryny
    З фото ще складніше посилання на фотографії
    http: //domain.ua/photos/image-215.html
    На даний час в мене 1200 таких помилок в Гугл Search Console.
    Дуже потрібна Ваша допомога.

    ReplyReply
  186. @Василь: чесно кажучи, раніше структура URL була набагато краща, ніж нова. Як я зрозумів, проблема в тому, що новини раніше були в одному розділі, а тепер — у п’ятьох? Як найпростіший варіант — залишіть ту саму структуру (news/a-115.html), а нові категорії зробіть тегами та закрийте їх від індексації щоб не було дублів.

    ReplyReply
  187. Отличная шпаргалка, жаль раньше не видел. Утащил к себе. Про запрет загрузки со сторонних сайтов — вообще огромный респект, даже понятия не имел, что можно так защититься!

    ReplyReply
  188. Добрый день.
    Подскажите как настроить редирект, который при добавлении лишних символов в конец ссылки, обрезал бы эти «добавления»

    вообщем вот нормальная страница:
    … /dekor/dekor_shtukaturka.php

    вот какие страницы попали в индекс и нужно их редиректить на нормальную страницу:
    … /dekor/dekor_shtukaturka.php/img/smol/img/smol/img/smol/img/smol/img/smol/img/smol/img/smol/img/big/180_resize.jpg

    И таких страниц много

    ReplyReply
  189. Здравствуйте. У меня наверное довольно распространенная беда: на хостинге в аккаунте несколько сайтов и в них постоянно внедряются файлы и папки с вредоносным кодом. Чищу, пароли меняю но видать дыра все же остается и начинается по новой. Вопрос по теме: а можно прописать что-то в .htaccess чтоб запретить любые действия с файлами — изменение, добавление и т.д. исключив мой IP адрес?

    ReplyReply
  190. @Николай: ищите дырку — запретом на изменение файлов тут не справиться, потому как если у злоумышленника есть доступ к Вашему серверу, то что ему помешает изменить .htaccess?

    ReplyReply
  191. Здравствуйте. Будьте добры, подскажите. Как реализовать такой 301-й:

    После удаления плагина yop-polls остались ссылки — дописываются к основному адресу статьи:

    site.ru/nazvanie-zapisi/?yop_poll_tr_id=&yop-poll-nonce-1_yp560632dd639b3=110545fan7734dfa3d8

    не могу сообразить, как такую маску сделать, чтобы на статью редирект был. Заранее спасибо.

    ReplyReply
  192. @dimas370: похоже, Вы не с той стороны к вопросу подходите — надо найти способ избавиться от таких ссылок, а не делать для них редиректы. Почитайте раздел поддержки этого плагина — возможно, там уже есть ответ. Или же создайте свой топик.

    ReplyReply
  193. Добрый день!
    А подскажите, можно ли в htaccess сделать так, чтоб комментарии не пролазили по определенным словам (стоп-словам)?
    Есть сайт, постоянно лезут боты, премодерация задолбала!
    Интересует именно через htacces, не через капчу.

    ReplyReply
  194. @Ярослав: поставьте (или включите) анти-спам Akismet — он нормально справляется. Даже если что-то прорывается, он обучаемый — отмечаете комментарий как спам и через некоторое время он запомнит.

    ReplyReply
  195. Кстати, на собственном печальном опыте удостоверился, что взломщики реально любят этот файл. И ломая его, делают много каки на сайте.

    ReplyReply
  196. Я начинающий программист и эта информация очень полезна для меня, пока учусь только разбираться, а тут все наглядно показано и рассказано! спасибо автору

    ReplyReply
  197. Отличная статья, правда написана давно, знаю что все это еще используется, но есть ли какие-нибудь нововведения?
    Так же интересует вопрос про пустые index.html, я тут скачал шаблон сайта и в папках есть index.php есть ли разница?
    Ну и напоследок, эту функцию Options All -Indexes нужно кидать в отдельный .htaccess в папке, к которой нужно применить? Или в основном .htaccess?

    Буду очень признателен за ответ, т.к. пока только разбираюсь со всеми премудростями))

    ReplyReply
  198. @Евгений: нововведения нужны тогда, когда старые решение не работают :)

    Можно использовать index.php, можно index.html — разницы, насколько мне известно, нет.

    Options All -Indexes — в основном htaccess, если внутри папок нет своего htaccess.

    ReplyReply
  199. @Yaroslav.CH:

    А если в каждой папке есть htaccess, в котором только deny from all, то все равно заливать в основной или в каждый?
    Простите за дотошность, хочется все правильно сделать.

    ReplyReply
  200. @Yaroslav.CH:
    Ну сайт отображается как и для админа так и для обычного пользователя как надо, это было сделано для защиты каталогов, чтобы их не было видно или типа того.
    Скажем так, это делал не я, но прочитал для чего это и оставил.

    ReplyReply
  201. @Евгений: странно. Дело в том, что конструкция «Deny from all» запрещает доступ к папке всем пользователям и потому обычно сопровождается следующей директивой Allow from — с указанием IP того, кому разрешено.

    ReplyReply
  202. Здравствуйте
    Прошу помощи )
    — Что имеем?
    Сайт (рукописная cms) переехал на новый хостинг. Управление хостингом через ISP manager. База данных + файловый архив. При попытке зайти на главную страницу сайта — получаем ошибку HTTP ERROR 500
    файл .htaccess находится в корне, в других папках файлов .htaccess нет. файл в корне имеет атрибуты «644»
    При этом открывается админка и вполне себе работает
    — Что сделано
    Пробовал всякие разные варианты .htaccess — не помогает
    файл редактирую в Notepad++
    кодировка файла ANSI
    формат конца строки UNIX
    ________________________________________________________
    лог ошибки
    mod_fcgid: stderr: PHP Parse error: syntax error, unexpected ‘[‘ in /var/www/u0370472/data/www/*****.ru/****/****/index.php on line 5

    в этом месте находится
    $arrComponent = [‘login’,’forgot’,’setup’];
    _______________________________________________________

    php info
    session.gc_probability = 1

    _______________________________________________________

    Люди добрые, помогите плиз ! )

    ReplyReply
  203. Присоединяюсь к отзывам об актуальности и полезности публикации. Очень удобна системность материала. Подкупает подвижничество и терпеливость автора при ответах на многочисленные вопросы. Здорово, что в наше шкурное время ещё остались такие люди. Очень хочу надеяться на то, что такая работа доставляет ему удовольствие. Всяческих ему успехов!
    Здесь периодически задаётся вопрос о возможности с помощью файла htaccess защитить сайт от записи в него злоумышленниками своих файлов. К сожалению, эта очень актуальная проблема остаётся без внимания. Сам столкнулся с ней — злоумышленники записали в одну из папок сайта код для рассылки спама, не повредив при этом файлов сайта. Указанный код не распознаётся антивирусниками, т.к. не является вирусом. Папка, в которую записан код, должна иметь права доступа 777 (каюсь, но изменить это не могу).
    Может ли с этой проблемой справиться файл htaccess и запретить злоумышленникам записывать в эту папку (и на сайт) любые файлы?

    ReplyReply
  204. @Николай: эта проблема кроется не в папке и chmod 777, а в дырке где-то в сайте, через которую злоумышленники и заливают файлы в папку. Соответственно, и проблему нужно искать внутри сайта.

    ReplyReply
  205. @Yaroslav.CH: Мне кажется, что «дыркой» всё же является именно код доступа 777. Подтверждением такого предположения является то, что злоумышленники смогли записать код спам-рассылки только в эту папку. Доступ к другим папкам им перекрыт кодом доступа 755. В любом случае спасибо за совет!
    Неужели файл htaccess такой бессильный для моего случая?

    ReplyReply
  206. @Николай: chmod 777 — это не «дыра», это абсолютно нормальные права доступа. Эти права позволяют каждому пользователю читать папку, редактировать и запускать выполнение скриптов. Но «пользователь» — это пользователь сервера, а не внешний посетитель сайта. Вы не сможете просто открыть папку по URL в браузере и записать туда файл. По Вашей логике, любая папка с chmod 777 открыта любому посетителю, но это абсолютно не так — ознакомьтесь со спецификацией chmod.
    Права 755 не защищают остальные папки — по ним каждый пользователь сервера (опять же — НЕ посетитель) имеет право читать и запускать выполнение. Если просто положить туда файл, то он выполнится. Но файла-то изначально там нет. Соответственно, поскольку только 777 позволяет редактировать, скорее всего, через дырку в другом скрипте, сначала ищется папка с правами 777, а затем в ней формируется исполняемый скрипт на рассылку, а затем он запускается на исполнение. Либо же, возможно, есть не дырка в скрипте, а изначально заложенный в одном из файлов код, который опять же формирует, запускает и т.д. Еще один вариант — это бекдор в одном из файлов, который опять же, позволяет сначала залить, а потом выполнить.
    Следовательно, исходя из этого, лично я не особо представляю, как можно решить этот вопрос через htaccess — все это происходит на уровне сервера.

    ReplyReply
  207. @Николай: для начала проверьте сам WP, темы и плагины на актуальность, затем попробуйте поставить плагин Wordfence Security, запустите сканирование сайта и посмотрите результаты. Еще можно установить и запустить проверку плагином AntiVirus. А также поставьте и настройте плагин WordPress File Monitor, чтобы мониторить изменения в файлах.

    ReplyReply
  208. День добрый!
    Подскажите, пожалуйста, по такой проблеме: попытки зайти на Главную страницу своего сайта последние 2-3 дня заканчиваются плачевно — на доли секунды появляется общий вид гл.страницы, затем долгая перезагрузка и в итоге просто белый фон, без указаний каких-либо ошибок и т.п. С разных браузеров, разных компов и т.п. При этом другие страницы сайта грузятся нормально и при прямом выходе и через поиск, и по ссылкам, но если с любой страницы переходить на Главную — та же белая тишина))
    Одно из предположений — неправильное содержание файла htaccess, может быть указаны неверно перенаправления, может быть где-то в настройках указано два разных URL адреса для главной страницы и возникает конфликт. Месяц назад переехала на новый хостинг с прежним доменом, ssl есть, редирект настроен. Началась проблема буквально пару дней назад и, по-моему, усиливается.
    Помогите, пожалуйста — что должно быть в файле htaccess? сейчас он выглядит так
    # BEGIN WordPress,

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    Подскажите, куда «бежать» искать ошибку??

    ReplyReply
  209. Добрый вечер!
    Подскажите как запретить дубли страниц такого плана:
    /ваш сайт.html?no_redirect=true
    Буду очень благодарен. Спасибо.

    ReplyReply
  210. Спасибо за статью, я только начинаю создавать сайты и ваша статья ну очень помогла. Доходчиво и понятно.

    ReplyReply
  211. Приветствую!
    У меня есть сайт на голом HTML + CSS
    Подскажите, как правильно сделать редирект в категориях
    чтобы переходя на https://site.ru/okna.html или https://site.ru/dveri/sklad.html
    клиенты попадали на https://site.ru/okna/ или https://site.ru/dveri/sklad/

    На другом сайте нашел вот это:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) $1.html [L]

    вставил в .htaccess на сервере, но почему-то не работает :(
    Надеюсь на вашу помощь и скорейший ответ.
    Заранее Благодарю

    ReplyReply
  212. Добрый день! Помогите советом: на сайте генерится динамическая Sitemap. В виде файла php она находится по адресу /catalog/controller/extension/feed/yandex_sitemap.php. Можно ли дописать .htacces, чтобы генерился файл карты сайта в формате xml по адресу site.com/sitemap.xml ? Спасибо.

    ReplyReply
  213. Прошу помощи!!

    На сайте внутренние ссылки прописаны с символом «+». А по факту в названиях папок — пробелы. Как заменить «+» на «%20»?

    Поясню))

    Сейчас страницы нормально открываются так — http://www.site.ru/article title/ (ну или http://www.site.ru/article%20title/ )

    А во внутренней перелинковке в ссылках — http://www.site.ru/article+title/

    И как заменить этот «плюс» на «пробел» ?

    Заранее огромное спасибо!!

    ReplyReply
  214. «1. Запрещаем загрузку файлов с внешних сайтов»

    Да не с внешних!!!
    а Запрещаем отдачу своих файлов по url НА внешние сайты

    Из-за ваших «Запрещаем загрузку файлов с внешних сайтов» уже который час не могу найти ответ на вопрос как мне запретить загружать на свой сайт стили и скрипты с внешних сайтов (cdn, bootstrap, plugis, google и т.п.)…

    Понимаете логическую разницу?

    ReplyReply
  215. @Алекс: по-сути, моя формулировка отображает взгляд «снаружи», Ваша же — «изнутри». И они обе верны. Но именно потому, что Вы ищете совершенно другое, Вам и кажется, что есть логическая ошибка. А ответ, полагаю, Вы не можете найти по той причине, что сам вопрос несколько странный — само по себе ничего на сайт не загружается, для решения Вам нужно найти вызов этих скриптов в коде и убрать сам вызов. Но, честно говоря, чем я помешал Вам в Ваших поисках – не ясно абсолютно :)

    ReplyReply

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *