Переадресация SEF со страниц, начинающихся с цифр

  • 2 Ответов
  • 426 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Всем привет. Столкнулся с проблемой на сайте (сайт делал не я)

В общем на нем если набрать любую абракадабру, начинающуюся с цифры, например
site.ru/7-sdfsdffsdfsdafdsalkfklsdaflsad
попадёшь на страницу материала
site.ru/7-material

Хотелось бы получать в данном случае 404

В htaccess нашёл следующие строки:

## 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 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]
#
## End - Joomla! core SEF Section.

Но если их удалить полетят некоторые ссылки на сайте. В настройках (Настройки SEO) Включить SEF (ЧПУ) - Да, Перенаправление URL -Да. Но выключение этих параметров не помогает

Прошу помощи, в Joomla не силён! Спасибо!

*

Оффлайн Paha_web

  • ***
  • 151
  • [+]1 / [-]0
  • Еще правок хотите?
    • Просмотр профиля
править нужно не htaccess а файл components\com_content\router.php

*

Оффлайн Paha_web

  • ***
  • 151
  • [+]1 / [-]0
  • Еще правок хотите?
    • Просмотр профиля
в файле components\com_content\router.php находите

$query = 'SELECT alias, catid FROM #__content WHERE id = '.(int)$id;
$db->setQuery($query);
$article = $db->loadObject();

if ($article) {
if ($article->alias == $alias) {
$vars['view'] = 'article';
$vars['catid'] = (int)$article->catid;
$vars['id'] = (int)$id;

return $vars;
}
}


меняете на

$query = 'SELECT alias, catid FROM #__content WHERE id = '.(int)$id.' AND alias = "'.$alias.'"';
$db->setQuery($query);
$article = $db->loadObject();
           
                       
if ($article) {
if ($article->alias == $alias) {
$vars['view'] = 'article';
$vars['catid'] = (int)$article->catid;
$vars['id'] = (int)$id;

return $vars;
}
}else{

             JError::raiseError(404, JText::_("Page Not Found"));
             
}