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 до внесения изменений и проверьте работоспособность всего сайта — после добавления новых строк.

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

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

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

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

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

    В общем за статью спасибо, мне кажется очень полезной.

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

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

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

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

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

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

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

    ОтветитьОтветить
  4. Не только в WP помогает создание index.html.

    А насчет перегрузки сервера — это да... больная тема.

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

    Спасибо! :)

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

    ОтветитьОтветить
  7. @© Yaroslav.Ch: Не соглашусь отчасти по ценам.

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

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

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

    Кстати упомянутая статейка — на 5 с плюсом. Хотя есть и спорные моменты. Но в основном касаемо наверное буржунета. С нашими заказчиками почти все в точку.

    ОтветитьОтветить
  9. @SibNext:

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

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

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

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

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

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

    ОтветитьОтветить
  12. @Rostislav.:

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

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

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

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

    В результате при повторном запросе, браузер получит статус 304, но не сами файлы — тем самым снижается нагрузка на сервер.

    Но полноценный файловый кеш — так, как это делают плагины — это правило не создает.

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

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

    Синтаксис:

    RedirectMatch [status] regexp URL

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

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

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

    ОтветитьОтветить
  15. вопрос по пунктам 14) и 15)

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

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

    Как минимум:

    а) неизвестно какой сервер;

    б) неизвестно какие сайты на нем лежат;

    в) неизвестна текущая нагрузка;

    г) неизвестно что именно делают на сайте посетители.

    В принципе, Вам ничто не может помешать попробовать:

    1. замерить существующую нагрузку;

    2. выбрать сайт, которые генерирует наименьшую нагрузку на сервер;

    3. применить для него указанные правила;

    4. мониторить нагрузку;

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

    ОтветитьОтветить
  17. А не подскажите как быть в такой ситуации:

    имею ссылки с форумов на определенные страницы своего сайта

    однако недавно поменял движок сайта и таких страниц теперь не существует, т.е теперь эти ссылки ведут на страницу 404

    Как перенаправить их с помощью htaccess на определенные разделы обновленного сайта?

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

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

    RedirectPermanent /old-directory www.domain.com/new-directory/

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

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

    ОтветитьОтветить
  19. А как редирект 301 сделать с сайта www.domen.ru на domen.ru? не можете прям строчку кода написать?

    ОтветитьОтветить
  20. Я даже половины не знаю.

    Какой же я разработчик. Было бы больше времени начал бы учить...

    ОтветитьОтветить
  21. @Kabban:

    301 редирект домена с WWW на домен без WWW:

    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^www.domainname.com$ [NC]

    RewriteRule ^(.*)$ domainname.com/$1 [R=301,L]

    domainname.com нужно заменить на соответствующее название домена.

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

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

    ОтветитьОтветить
  23. Вот то, что я давно искал!

    Круто! Спасибо!

    А то я не техник. не рублю в этих премудростях.

    с меня РТ и буз

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

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

    2 allow from all

    3 deny from 145.186.14.122

    4 deny from 124.15.

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

    ОтветитьОтветить
  25. @Алексей: это блокировка по маске.

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

    ОтветитьОтветить
  26. Хорошая статья на «больную» тему :)

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

    ОтветитьОтветить
  27. @ielektronick: спасибо за комментарий.

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

    ОтветитьОтветить
  28. а возможно ли использование нескольких правил одновременно в одном htaccess файле?

    и как это разделение будет выглядеть в тексте файла?

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

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

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

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

    ОтветитьОтветить
  32. у меня тут вопросик получился при использовании htaccess:

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

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

    а так все работает спасибо )))

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

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

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

    ОтветитьОтветить
  35. @Ляйсан Шагалиева:

    Не совсем понятно, что имеется ввиду «перестал индексировать»? А раньше он индексировался? Если да, то редирект ничем не поможет.

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

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

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

    ОтветитьОтветить
  36. Вопрос на засыпку — можно ли както защитить паролем через .htpasswd такую ссылку http://какойто_сайт/?module=admin, но при этом чтобы остальные ссылки типа http://какойто_сайт/?controller=Rubric&rubric_id=14&h=1 не защищались?

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

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

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

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

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

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

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

    Allow from 102.54.68.123

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

    Allow from 102.54.68. или Allow from 102.54.

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

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

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

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

    ОтветитьОтветить
  45. @Mozgotrah: спасибо за комментарий.

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

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

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

    RewriteRule ^.htaccess$ — [F]

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

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

    RewriteCond %{HTTP_HOST} ^proofsite\.com\.ua$

    RewriteRule ^(.*)$ www.proofsite.com.ua/$1 [R=301]

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

    RewriteCond %{HTTP_HOST} ^www\.proofsite\.com\.ua$

    RewriteRule ^(.*)$ proofsite.com.ua/$1 [R=301]

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

    php_value display_errors OFF

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

    ОтветитьОтветить
  47. 1. а есть значение в каком порядке эти пункты записывать в файл?

    2. если я использую «9. Сжимаем элементы с помощью mod_deflate», то «15. Сжимаем компоненты сайта путем включения Gzip» уже не нужно?

    3. А как проследить что «18. Перенаправляем RSS-ленту WordPress на FeedBurner» что-то перенаправляет?

    ОтветитьОтветить
  48. @ Dsaha:

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

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

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

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

    я это знаю:)

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

    ОтветитьОтветить
  50. вот что вставила в .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-]+)?/?$ feeds.feedburner.com/sheko [R=302,NC,L]

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

    ОтветитьОтветить
  51. @ Dsaha:

    Попробуйте вот такой вариант:

    [IfModule mod_rewrite.c]

    RewriteEngine on

    RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]

    RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]

    RewriteRule ^feed/?([_0-9a-z-]+)?/?$ feeds2.feedburner.com/yourfeed [R=302,NC,L]

    [/IfModule]

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

    ОтветитьОтветить
  52. подскажите, почему не срабатывает редирект?

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

    RedirectMatch 301 sheko.ru/wp-trackback.php?p=264 sheko.ru/2009/11/chto-tak...aya-grafika.html
    

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

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

     Redirect 301 /wp-trackback.php?p=264 htp://www.domainname.com/r/file.html 

    ОтветитьОтветить
  54. RedirectMatch 301 /wp-trackback.php?p=264 htp://sheko.ru/2009/11/chto-tak...afika.html

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

    ОтветитьОтветить
  55. @ Dsaha:

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

    ОтветитьОтветить
  56. @ Dasha: а, блин — ну конечно не работает, там же GET параметры внутри. Из головы вылетело, что стандартный редирект с параметрами не функционирует, сорри :)

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

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

    ОтветитьОтветить
  57. Огроооооомное Вам спасибо!!!!!

    Второй день мучаюсь, ни на одном форуме ничего не подсказали!!!

    ОтветитьОтветить
  58. Добрый день

    Ув. 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: Статья очень нужная и, что очень важно, понятная. Отдельное спсб. )

    ОтветитьОтветить
  59. @ Владимир:

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

    ОтветитьОтветить
  60. @ Yaroslav.CH:

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

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

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

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

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

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

    ОтветитьОтветить
  62. @ Yaroslav.CH:

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

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

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

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

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

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

    ОтветитьОтветить
  64. Опять у меня что-то не выходит.

    Есть еще пару ссылок, аля 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»

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

    ОтветитьОтветить
  65. @ 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 не обязательно должен быть одинаковым.

    ОтветитьОтветить
  66. а у меня так

     
    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

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

    ОтветитьОтветить
  67. @ 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.

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

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

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

    ОтветитьОтветить
  71. Спасибо за статью!!!

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

    www.site.ru/present.php?pid=flash&page=1

    www.site.ru/catalog.php?pid=pens&page=1

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

    www.site.ru/present.php?pid=flash

    www.site.ru/catalog.php?pid=pens

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

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

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

    Доступ в эту папку запрещен администратором сайта или в папке нет индексного файла.

    Залил готовый сайт на хостинг с локального сервера, выдает ошибку Ошибка 403. Доступ запрещен.

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

    ОтветитьОтветить
  75. @ Artur: а чем тут можно помочь — ни сайта, ни содержимого htaccess Вы не показали.

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

    ОтветитьОтветить
  76. @ Yaroslav.CH:

    Мой сайт: www.zapsibdomstoi.ru

    Пробовал переименовать, ничего из этого не выходит ошибка сохраняется (

    Сейчас обнаружил такую вешь! Если с главной страницы если вводить логин и пароль (к примеру www.zapsibdomstroi.ru) пишет что ошибка 403, а если кликнуть допустим на вкладку О компании к примеру (www.zapsibdomstroi.ru/node/30) и там ввести свои данные то успешно можно войти на сайт.

    В чем проблема понять никак не могу...

    Извиняюсь за свою тупость, это мой первый сайт и в сайтостроении я мало чего понимаю.

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

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

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

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

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

    ОтветитьОтветить
  78. @ Yaroslav.CH:

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

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

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

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

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

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

    ОтветитьОтветить
  80. У меня есть сайт temp21.kiev.ua

    хочу сделать ЧПУ

    temp21.kiev.ua/?chp=obyav&rub=1 — так выглядит раздел Продам

    хочу сделать temp21.kiev.ua/prodam — как это можно сделать?

    Заранее спасибо

    ОтветитьОтветить
  81. Уважаемый Yaroslav.CH,

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

    Заранее спасибо.

    ОтветитьОтветить
  82. @ Yaroslav.CH:

    Воспользовался, но выскочила следующая ошибка

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

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

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

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

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

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

    ОтветитьОтветить
  86. @ mccats:

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

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

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

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

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

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

    ОтветитьОтветить
  90. Спасибо за примеры!

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

    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 ^(.*)$ <a href="http://site\.ru/%1\.html">site\.ru/%1\.html</a> [NC,L]

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

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

    ОтветитьОтветить
  92. Здравствуйте.

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

    В тему статьи добавлю:

    если ваши страницы работают с расширением .php а вы хотите чтобы были .html но с работоспособностью .php то в .htaccess нужно добавить вот такую строчку AddType application/x-httpd-php php phhtml html htm и все страници сохранять уже с разрешением html а не php.

    Эта строчка будет приказывать серверу читать и обрабатывать html как php, страница остается html ))

    Сам эту функцию проверял и на одном из сайтов это использую.

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

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

    Не судите строго я всему только учусь. Твитер только на днях завел.

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

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

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

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

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

    ОтветитьОтветить
  94. @Yaroslav.CH:

    Днем я написал коряво и пришлось видать удалить, теперь пишу более менее правильно

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

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

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

    ОтветитьОтветить
  95. @Ruliks:

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

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

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

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

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

    ОтветитьОтветить
  96. Ахринительная статья!

    Спасибо)))) Статья добавил в закладки)))

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

    ОтветитьОтветить
  98. @Вадим Чоповский:

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

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

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

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

    ОтветитьОтветить
  99. Не могу убрать дубли некоторых страниц и удалить «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/(.+)$ www.everydayolga.com/$1 [R=301,L]

    # END WordPress

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

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

    ОтветитьОтветить
  100. Спасибо автору за статью!

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

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

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

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

    Сайт allfortrader.net

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

    ОтветитьОтветить
  102. Ярослав, спасибо за ответ.

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

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

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

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

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

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

    ОтветитьОтветить
  105. Серьезный справочный материал по работе с .htaccess

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

    Спасибо.

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

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

    так как сейчас я на виртуальном хосте денвер я стал проверять так: localhost/denwer/tools/draw/.htaccess и я смог прочитать код, почему так?

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

    ОтветитьОтветить
  107. @игорь:

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

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

    <files .htaccess="">, а <files .htaccess>.

    Попробуйте еще раз.

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

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

    ОтветитьОтветить
  108. @Yaroslav.CH:

    Спасибо за скорый ответ.

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

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

    ОтветитьОтветить
  109. @игорь:

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

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

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

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

    ОтветитьОтветить
  110. хотелось бы у вас еще 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 хотелось бы почитать.

    ОтветитьОтветить
  111. @игорь

    :

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

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

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

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

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

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

    ОтветитьОтветить
  112. @Yaroslav.CH:

    у меня 4 страницы для создание комментариев,

    create_comm.php ,create_comm2.php,create_comm3.php,create_comm4.php

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

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

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

    Options +SymLinksIfOwnerMatch

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

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

    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]

    ОтветитьОтветить
  116. Привет.

    По п.6. еще можно поправку внести.

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

    ОтветитьОтветить
  117. Применение директивы сохранит индексацию картинок?:

    .htaccess, позволит предотвратить загрузку ваших изображений — сторонними сайтами.

    Options +FollowSymlinks

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

    RewriteEngine On

    RewriteCond %{HTTP_REFERER} !^$

    RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com [nc]

    RewriteRule .*.(gif|jpg|png)$ domainname.com/img/stop_s...bandwidth.gif[nc]

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

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

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

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

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

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

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

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

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

    ОтветитьОтветить
  123. Спасибо за хорошую работу!!! Знал о важности файла .htaccess.

    Но руки не доходили до его правки.

    После просмотра материала думаю заняться его правкой...

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

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

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

    test.net/images/

    в ней лежат допустим 3 картинки:

    1.png

    2.png

    Default.png

    ------

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

    test.net/images/3.png

    то ему открывалась картинка

    test.net/images/Default.png

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

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

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

    В общем этот Блог настоящая находка!

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

    ОтветитьОтветить
  129. RewriteRule ^category/(.+)$ www.yourdomain.com/$1 [R=301,L]

    Надо убрать из URL ?fb_xd_fragment

    Использовал RewriteRule ^?fb_xd_fragment (.+)$ yootoo.ru/$1 [R=301,L]

    не сработало. Подскажите как сделать?

    ОтветитьОтветить
  130. Отличная статья! Много нового узнал, только вот один вопрос.

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

    Files «applet.jar»

    Order Deny,Allow

    Deny from all

    /Files

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

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

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

    ОтветитьОтветить
  132. Options +FollowSymLinks

    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^moysait\.com.ua\$ [NC]

    RewriteRule ^(.*)$ www.moysait.com.ua/$1 [R=301,L]

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

    ОтветитьОтветить
  133. Здравствуйте!

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

    если у сайта сменилось название директории (каталога).

    пример:

    было:

    сайт.ру/ньюс/статья1

    сайт.ру/ньюс/статья2

    сайт.ру/ньюс/статья3

    стало:

    сайт.ру/новости/статья1

    сайт.ру/новости/статья2

    сайт.ру/новости/статья3

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

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

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

    спасибо заранее!

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

    ОтветитьОтветить
  135. @Yaroslav.CH:

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

    правило 4.

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

    Redirect 301 /d/file.html www.domainname.com/r/file.html

    а какой должен быть код-маска, если статей много (видаа file1, file2, file345),

    а разделов всего два, старый и новый?

    иначе надо в .htaccess прописывать все статьи вручную, а это будет перегружать сервер и снижать быстродействие.

    ОтветитьОтветить
  136. @Denis:

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

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

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

    и все заработало :)

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

    ОтветитьОтветить
  137. Помогите пожалуйста.

    У меня ссылка была в виде:

    /сайт.ru/content/название товара, а теперь сайт.ru/новая папка/название товара.html

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

    Делал редирект в виде:

    RewriteRule ^content/(.+)$ сайт.ru/новая папка/$1.html [R=301,L]

    И не работает ;(

    В чем проблема?

    ОтветитьОтветить
  138. Может поможетете, если кто-то знает ответ?

    Есть каталог

    http://сайт.ru/catalog.php/(куча разных старниц)

    и чтобы перекидывало с любового введенного адреса, который начинается с catalog.php на:

    http://сайт.ru/products/10

    и ничего больше не дописывало. тоесть чтобы просто редиректило на директорию.

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

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

    ОтветитьОтветить
  139. Вопрос по файлу .htaccess:

    Имеется сайт www.сайт.ru

    в директории www.сайт.ru/dir — еще один сайт.

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

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

    ОтветитьОтветить
  140. Есть такой плагин Pretty link, удобная штука, можно и РНР скрипты использовать — более сложные, более простые. Но если к примеру всего пара-тройка ссылок, которые хочется спрятать, либо сделать короткими, делаю так.

    1. Допустим, у нас есть урл с рефкой — хттп://сайт_партнера.ру/товар/мой_ID_бла-бла-бла

    2. Создем пустую папку в корне, например «goto», кладем туда .htaccess со строкой:

    redirect /goto/товар хттп://сайт_партнера.ру/товар/мой_ID_бла-бла-бла

    3. Теперь можно ставить красивую ссылку — хттп://ваш_сайт.ру/goto/товар

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

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

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

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

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

    Недавно пропали все страницы из поиска и я ищу причину.

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

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

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

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

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

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

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

    ОтветитьОтветить
  150. Достали спамеры! Я уже начала коллекционировать их адреса, к примеру, много мусора идет вот с этих 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?

    Вы можете прям кусочек написать, чтобы дел было — скопировать и вставить?

    ОтветитьОтветить
  151. А вот такой вопрос:

    настраивал редирект сайта, чтобы склеить имена с www и без оного

    таким образом

    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

    RewriteRule ^(.*)$ %1/$1 [R=301,L]

    В принципе всё работает, кроме одного единственного

    если заходить на www.site.com то вместо site.com

    он ещё полностью распишет всю пхп строку, которая следует далее

    site.com/index.php?content=catalog&id=

    В упор не пойму как от этого избавиться :(

    ОтветитьОтветить
  152. @Елена Олейникова:

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

    «allow from all» — разрешить для всех.

    "deny from [IP]" — запретить для конкретного адреса.

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

    Общий код:

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

    ErrorDocument 403 www.domainname.com

    Order deny,allow

    Allow from all

    Deny from 176.8.91.244

    Deny from 5.254.179.153

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

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

    ОтветитьОтветить
  154. @Олег Астанин:

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

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

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

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

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

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

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

    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]

    RewriteRule ^(.*)$ site.com/$1 [R=301,L]

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

    ОтветитьОтветить
  155. Спасибо автору.

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

    ОтветитьОтветить
  156. Здравствуйте.

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

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

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

    Нашел такую тему:

    # Запретит использования прямых ссылок на ваши картинки

    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 (Доступ запрещен)

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

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

    ОтветитьОтветить
  160. @© Yaroslav.CH:

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

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

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

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

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

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

    ОтветитьОтветить
  163. Подскажите как быть с вопросительным знаком в начале урла.

    мне надо ссылку типа mysite.ru/?parent_id=711 перенаправить по новому адресу mysite.ru/novaya_ssylka

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

    Пример : есть урл — mysite.com/mobile/m_portfolio.php

    с помощью htaccess изменяю на mysite.com/portfolio

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

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

    ОтветитьОтветить
  165. Недавно делала редирект некоторых страниц с вида aaa.html на без html.

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

    Использовала вариант, примерно как у вас в 13 пункте руководства.

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

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

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

    ОтветитьОтветить
  168. @Самандар:

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

    ОтветитьОтветить
  169. урл с параметрами меток гугл и яндекс отдает 301 или 303 ответ сервера. А должен отдавать 200 ответ.

    пример — altravita-ivf.ru/zapis.ht...p;utm_campaign=3

    Как исправить этот баг?

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

    ОтветитьОтветить
  171. Ребята помогите

    Уже 3 дня не могу удалить папку в URL

    Вот есть у меня например сайт

    localhost/newlifeprint/

    там есть ссылка вида q/%s.php

    тоесть я хочу что-бы под %s.php подставлялся id

    в итоге имеем что-то типа этого

    localhost/newlifeprint/q/1.php

    как удалить вот эту папку q

    т.е Я хочу что-бы был вид вот такой

    localhost/newlifeprint/1.php

    я вставил ваш код для удаления «category» из URL

    но у меня перебрасівает на страницу

    localhost/1.php

    без самого сайта /newlifeprint

    Помогите очень прошу

    ОтветитьОтветить
  172. Отличная подборка!

    Допишу пару правил, которыми сам пользуюсь.

    Сори если есть где-то в комментах, читал только статью.

    #Скрыть вывод ошибок — использую если сайт на требует 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)$ 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

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

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

    Я конечно извиняюсь но что это значит? Как понять срок жизни заголовка?

    ОтветитьОтветить
  175. Здраствуйте, помогите если сможете... нужно устроить переадресацию со страниц типа:

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

    на страници

    site.ru/component/tag/новое (/component/tag/ статично)

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

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

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

    ОтветитьОтветить
  178. @Yaroslav.CH:

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

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

    ОтветитьОтветить
  179. @Надежда:

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

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

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

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

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

    ОтветитьОтветить
  181. У меня постоянно какой-то хакер заливает в корень сайта файл с расширением html — index.htm и содержанием: «Hacked By Moroccan wolf ~ Dz Team»

    Что делать? Как запретить заливать любые файлы в корень сайта?

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

    ОтветитьОтветить
  183. Изменил нижнее подчеркивание на тире в адресах страниц, при переадресации страниц со старых

    Redirect 301 /bednie_office_rabotniki/ www.mysite.ru/bednie-office-rabotniki/

    страница получается с таким адресом

    mysite.ru/bednie-office-rabotniki/?page=bednie_office_rabotniki

    а должно быть

    mysite.ru/bednie-office-rabotniki/

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

    ОтветитьОтветить
  184. 301 редирект для мультиязычного сайта на Joomla 3 c 303 редиректом

    Здравствуйте, уважаемые!

    Прошу помочь решить следующую насущную для мультиязычного сайта на Joomla 3 и, думаю, многих других CMS, проблему:

    При создании нескольких языковых версий сайта средствами мультиязычности самой CMS получается следующее:

    domain.ru -с русским языком

    domain.ru/ru/-русская версия сайта(является основным языком сайта)

    domain.ru/en/-английская версия сайта

    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 , чтобы быстрее смог его реализовать.

    Если для кого-то это тривиально, то простите за незнание! :-)

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

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

    ОтветитьОтветить
  187. Не работает правило 20, с помощью которого можно убрать *.php

    У меня nginx 1.8.0

    сделал для себя такой конфиг

    location / { rewrite ^/(([^/]+/)*[^.]+)$ /$1.php break; }

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

    ОтветитьОтветить
  188. Доброго дня!

    Потрібна Ваша допомога. Спробую пояснити, зробив новий сайт та залив на місце старого в результаті змінилась повністю структура сайту.

    Було: 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.

    Дуже потрібна Ваша допомога.

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

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

    ОтветитьОтветить
  191. Добрый день.

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

    вообщем вот нормальная страница:

    ... /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

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

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

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

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

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

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

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

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

    ОтветитьОтветить
  196. Добрый день!

    А подскажите, можно ли в htaccess сделать так, чтоб комментарии не пролазили по определенным словам (стоп-словам)?

    Есть сайт, постоянно лезут боты, премодерация задолбала!

    Интересует именно через htacces, не через капчу.

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

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

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

    ОтветитьОтветить
  200. Отличная статья, правда написана давно, знаю что все это еще используется, но есть ли какие-нибудь нововведения?

    Так же интересует вопрос про пустые index.html, я тут скачал шаблон сайта и в папках есть index.php есть ли разница?

    Ну и напоследок, эту функцию Options All -Indexes нужно кидать в отдельный .htaccess в папке, к которой нужно применить? Или в основном .htaccess?

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

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

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

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

    ОтветитьОтветить
  202. @Yaroslav.CH:

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

    Простите за дотошность, хочется все правильно сделать.

    ОтветитьОтветить
  203. @Yaroslav.CH:

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

    Скажем так, это делал не я, но прочитал для чего это и оставил.

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

    ОтветитьОтветить
  205. Здравствуйте

    Прошу помощи )

    — Что имеем?

    Сайт (рукописная 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

    _______________________________________________________

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

    ОтветитьОтветить
  206. Присоединяюсь к отзывам об актуальности и полезности публикации. Очень удобна системность материала. Подкупает подвижничество и терпеливость автора при ответах на многочисленные вопросы. Здорово, что в наше шкурное время ещё остались такие люди. Очень хочу надеяться на то, что такая работа доставляет ему удовольствие. Всяческих ему успехов!

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

    Может ли с этой проблемой справиться файл htaccess и запретить злоумышленникам записывать в эту папку (и на сайт) любые файлы?

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

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

    Неужели файл htaccess такой бессильный для моего случая?

    ОтветитьОтветить
  209. @Николай: chmod 777 — это не «дыра», это абсолютно нормальные права доступа. Эти права позволяют каждому пользователю читать папку, редактировать и запускать выполнение скриптов. Но «пользователь» — это пользователь сервера, а не внешний посетитель сайта. Вы не сможете просто открыть папку по URL в браузере и записать туда файл. По Вашей логике, любая папка с chmod 777 открыта любому посетителю, но это абсолютно не так — ознакомьтесь со спецификацией chmod.

    Права 755 не защищают остальные папки — по ним каждый пользователь сервера (опять же — НЕ посетитель) имеет право читать и запускать выполнение. Если просто положить туда файл, то он выполнится. Но файла-то изначально там нет. Соответственно, поскольку только 777 позволяет редактировать, скорее всего, через дырку в другом скрипте, сначала ищется папка с правами 777, а затем в ней формируется исполняемый скрипт на рассылку, а затем он запускается на исполнение. Либо же, возможно, есть не дырка в скрипте, а изначально заложенный в одном из файлов код, который опять же формирует, запускает и т.д. Еще один вариант — это бекдор в одном из файлов, который опять же, позволяет сначала залить, а потом выполнить.

    Следовательно, исходя из этого, лично я не особо представляю, как можно решить этот вопрос через htaccess — все это происходит на уровне сервера.

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

    ОтветитьОтветить

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

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