"Что было, что будет, чем сердце успокоится". Беглый анализ ряда ваших сайтов показал, что частенько в этом самом htaccess находятся инструкции, которых там быть не должно. Они туда попали либо по незнанию, либо по незлому умыслу. Но всё равно - одинаково вредны. Правила просты: в эту тему желающие выкладывают содержимое своих файлов htaccess, обрамив их тегами code (на панели редактора Вставить - Код). Что не надо выкладывать: 1) стандартные файлы движков 2) адреса своих сайтов предварительно заменяйте на site 3) строки, добавленные в файл плагинами. Они обычно обрамлены комментариями с указанием названия плагина По мере свободного времени я буду оценивать это и давать рекомендации.
Тогда я первая =) Код: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Я вообще не сильная во всем этом, поэтому что такое "стандартные файлы движков", не знаю. Это все, что есть в моем htaccess.
Я не уверена, что вы разберетесь, ведь у меня движок DLE, но если что-то насторожит, то сообщите. Сама поставила только 3 и 4 строчку - редирект без www и редирект на https Весь остальной код был в движке, его я не меняла, не убирала. Код: DirectoryIndex index.php RewriteEngine On RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC] RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L] RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L] RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 [L] RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 [L] RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html$ index.php?mod=print&subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 [L] RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 [L] RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 [L] RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 [L] RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html$ index.php?mod=print&news_page=$2&newsid=$3&seourl=$4&seocat=$1 [L] RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ index.php?newsid=$2&seourl=$3&seocat=$1 [L] RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 [L] RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$2&news_page=$1&seourl=$3 [L] RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html$ index.php?mod=print&news_page=$1&newsid=$2&seourl=$3 [L] RewriteRule ^([0-9]+)-(.*).html$ index.php?newsid=$1&seourl=$2 [L] RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2&day=$3 [L] RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&day=$3&cstart=$4 [L] RewriteRule ^([0-9]{4})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2 [L] RewriteRule ^([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&cstart=$3 [L] RewriteRule ^([0-9]{4})(/?)+$ index.php?year=$1 [L] RewriteRule ^([0-9]{4})/page/([0-9]+)(/?)+$ index.php?year=$1&cstart=$2 [L] RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [B,L] RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [B,L] RewriteRule ^xfsearch/(.*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [B,L] RewriteRule ^xfsearch/(.*)/?$ index.php?do=xfsearch&xf=$1 [B,L] RewriteRule ^user/([^/]*)/rss.xml$ index.php?mod=rss&subaction=allnews&user=$1 [L] RewriteRule ^user/([^/]*)(/?)+$ index.php?subaction=userinfo&user=$1 [L] RewriteRule ^user/([^/]*)/page/([0-9]+)(/?)+$ index.php?subaction=userinfo&user=$1&cstart=$2 [L] RewriteRule ^user/([^/]*)/news(/?)+$ index.php?subaction=allnews&user=$1 [L] RewriteRule ^user/([^/]*)/news/page/([0-9]+)(/?)+$ index.php?subaction=allnews&user=$1&cstart=$2 [L] RewriteRule ^user/([^/]*)/news/rss.xml(/?)+$ index.php?mod=rss&subaction=allnews&user=$1 [L] RewriteRule ^lastnews(/?)+$ index.php?do=lastnews [L] RewriteRule ^lastnews/page/([0-9]+)(/?)+$ index.php?do=lastnews&cstart=$1 [L] RewriteRule ^catalog/([^/]*)/rss.xml$ index.php?mod=rss&catalog=$1 [L] RewriteRule ^catalog/([^/]*)(/?)+$ index.php?catalog=$1 [L] RewriteRule ^catalog/([^/]*)/page/([0-9]+)(/?)+$ index.php?catalog=$1&cstart=$2 [L] RewriteRule ^newposts(/?)+$ index.php?subaction=newposts [L] RewriteRule ^newposts/page/([0-9]+)(/?)+$ index.php?subaction=newposts&cstart=$1 [L] RewriteRule ^favorites(/?)+$ index.php?do=favorites [L] RewriteRule ^favorites/page/([0-9]+)(/?)+$ index.php?do=favorites&cstart=$1 [L] RewriteRule ^rules.html$ index.php?do=rules [L] RewriteRule ^statistics.html$ index.php?do=stats [L] RewriteRule ^addnews.html$ index.php?do=addnews [L] RewriteRule ^rss.xml$ index.php?mod=rss [L] RewriteRule ^sitemap.xml$ uploads/sitemap.xml [L] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L] RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+)/rss.xml$ index.php?mod=rss&do=cat&category=$1 [L] RewriteRule ^page,([0-9]+),([^/]+).html$ index.php?do=static&page=$2&news_page=$1&seourl=$2 [L] RewriteRule ^print:([^/]+).html$ index.php?mod=print&do=static&page=$1&seourl=$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+).html$ index.php?do=static&page=$1&seourl=$1 [L]
Какой у Вас хостер? Большинство известных мне хостеров имеют настройку редиректа в панели. Это надёжнее, чем Ваш вариант, и быстрее. Есть многое в природе, друг Горацио, Что и не снилось нашим мудрецам. (с) Раз это штатный код движка, то обсуждать тут нечего. Вопрос о том, зачем кому-то движок с такой горой инструкций для сверхмедленного Апача, оставим для другой темы.
А если "в этом самом htaccess находИЛИсь инструкции, которых там быть не должно…", а потом htaccess снова сменился на стандартный, это сильно больно будет для сайта? ))
Каждая ситуация очень индивидуальна. Вот в случае Порсены, например, удаление тех строк и включение опции в панели хостинга будет не сильно заметно, но всё же немного ускорит работу сайта и устранит непредсказуемые последствия. В другом же случае, который мы разбирали в закрытом разделе, выдача страниц ускорилась вдвое после удаления явно лишних инструкций. Вот как-то так.
Попробую кратко внести ясность в процесс формирования страниц, чтобы вы понимали принцип, хотя бы в общих чертах. Предупреждение: это чисто условная схема, показывающая лишь суть, она не может быть использована как учебное пособие. "Трюки выполнены профессионалами, не повторяйте их дома" 1) Посетитель запрашивает страницу site.ru/folder1/folder2/index.php (Важно! Это физически существующие папки на диске, а не таксономия движка) 2) Запрос обрабатывает nginx (быстрый сервис): читает свои настройки из памяти и применяет их к запросу проверяет наличие кэша и возможность его выдачи передаёт запрос на Apache 3) Запрос обрабатывает Apache (крайне медленный сервис): читает свои настройки из памяти и применяет их к запросу читает настройки в htaccess в каждой(!) папке по пути, сравнивает их с серверными, удаляет взаимоисключающие, отдавая предпочтение тем, что в файле(!) передаёт запрос на php 4) php генерирует html страницу и по обратной цепочке отдаёт посетителю 5) браузер принимает готовую страницу и начинает её собирать - по мере вывода на экран пользователя браузер вызывает все дополнительные файлы (скрипты, стили, картинки), которые указаны в коде страницы. Причём делает это в порядке следования инструкций - сверху вниз. Для каждого отдельного файла на сервер отправляется отдельный запрос, который проходит точно такую же цепочку и точно так же обрабатывается. 6) посетитель получает готовую страничку (если повезло) Особо хочу обратить внимание на пункт 3.2. Он выполняется для каждого файла из запроса - скрипты, стили, картинки, шрифты и т.д. Именно поэтому важно не делать в файлах htaccess длинных инструкций. И именно поэтому так важно, чтобы все файлы выдавали 304 при повторном запросе - в таком случае браузер просто получит этот статус от nginx, возьмёт файл из своего (браузерного) кэша и успокоится на этом. На nginx невозможно влиять со стороны сайта - он чисто серверный. Поэтому он очень быстрый и сейчас везде рекомендуется как основной и единственный веб-сервер, т.е. без использования Apache. Но на шаред хостингах такое практически невозможно из-за того, что… барабанная дробь… на nginx невозможно влиять со стороны сайта Под каждый сайт требуется индивидуальная настройка. На своём сервере я проверял замеры - устранение Apache ускоряет выдачу тяжёлой страницы на высоконагруженном сайте втрое: с более чем 10 секунд до 3 секунд (и это без 304). Безусловно, важную роль в этом играет кэширование со стороны движка, но об этом мы поговорим в следующей серии.