Не знал как назвать заголовок темы, не судите строго, сейчас расскажу суть проблемы.
Есть сайт на Joomla 1.5.26, некоторое время назад стало появляться множество ошибочных URL, на сайте используется стандартный SEF (все три галки). Стандартный htacces
# Блокировать любой запрос, пытающийся установить значение mosConfig через URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Блокировать любой запрос, пытающийся испортить base64_encode через URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Блокировать любой запрос, содержащий тег <script> в URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Блокировать любой запрос, пытающийся установить значение глобальных переменных PHP через URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Блокировать любой запрос, пытающийся изменить _REQUEST переменную через URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Перенаправлять заблокированные запросы на страницу 403 с запрещенными ошибками!
RewriteRule ^(.*)$ index.php [F,L]
# RewriteBase /
########## Begin - Joomla! core SEF Section
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
Стоит на разделы и категории переадресация на верный URL для исключения дублей
Категория
<?php
$this->original_link = JRoute::_(ContentHelperRoute::getCategoryRoute(JRequest::getVar('id'),
0));
if (JRequest::getInt('start') > 0) $this->original_link .= "?start=" . JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link,'','' ,true);
?>
Раздел
<?php
$this->original_link = JRoute::_(ContentHelperRoute::getSectionRoute(JRequest::getVar('id')));
if (JRequest::getInt('start') > 0) $this->original_link .= "?start=" . JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link,'','' ,true);
?>
Для статей данный твик не стоит, так как использется канонический плагин.
Так вот об ошибочных URL, переходят по ним поисковики, во время перехода сайт очень сильно грузится, ошибка при переходе бесконечная переадресация, таким образом запрос не может быть выполнен.
URL вот такого формата
http://mysite.net/razdel/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D1%8F%D1%8F%20%D0%92%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20%D0%97%D0%BD%D0%B0%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D0%BE%D0%B3%D0%BE%20%D0%9F2%D0%9F%20%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0%20%D0%A2%D0%BE%D1%80%D1%80%D0%B5%D0%BD%D1%82%D0%B0!!.html?start=48http://mysite.net/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D1%8F%D1%8F%20%D0%92%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20%D0%97%D0%BD%D0%B0%D0%BC%D0%B5%D0%BD%D0%B8%D1%http://mysite.net/%D0%9F%D1%80%D0%B8%D0%B2%D0%BB%D0%B5%D0%BA%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8%20%D0%BD%D0%B0%20%D1%80%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BBhttp://mysite.net/%EF%BF%BDТак вот суть проблемы в том чтобы отдавать 404 по запросу на такие URL с русскими буквами и какими либо другими, а не проводить в цикл бесконечных переадресаций сайт в 301.
Как исключить русский шрифт из URL кроме поиска.
На сервере стоит nginx / apache / php / MySQL
Помогите пожалуйста, иной раз из-за таких URL нагрузка ставновится невероятной.