Форум русской поддержки Joomla!® CMS
08.12.2016, 14:00:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Страница 404 упорно редиректит на главную страницу сайта

 (Прочитано 654 раз)
0 Пользователей и 1 Гость смотрят эту тему.
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« : 19.06.2015, 19:23:20 »

Добрый день!

На сайте http://alcopribor.ru/, который я обслуживаю, вместо 404-й страницы упорно идёт редирект на главную сайта. Так было всегда, просто клиент просит сделать кастомизированную 404-ю. Установил модуль Qlue Custom 404, однако ничего не изменилось. Joomla 2.5.6, PHP 5.3.10

Я сильно подозреваю, что дело в SEF-секции .htaccess, однако не могу разобраться т.к. мозг вообще не переваривает регулярных выражений. Прошу помощи, прилагаю сегмент .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 request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [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]
#
## End - Joomla! core SEF Section.
Также нельзя исключать того, что Joomla где-то в своих внутренностях делает этот паразитный редирект, хотелось бы узнать в каком направлении сам движок копать?
Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #1 : 19.06.2015, 21:34:22 »

PS. На сайте установлен VirtueMart.
Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #2 : 23.06.2015, 20:13:21 »

Проблема так и не решена, как бы ни ковырял всё что только можно Sad Ни у кого нет идей?
Записан
antony2606
Завсегдатай
*****

Репутация: +34/-4
Offline Offline

Пол: Мужской
Сообщений: 555


Работаем!


« Ответ #3 : 23.06.2015, 20:23:45 »

Цитировать
Также нельзя исключать того, что Joomla где-то в своих внутренностях делает этот паразитный редирект, хотелось бы узнать в каком направлении сам движок копать?
еще и хостера нельзя исключать..!!

почитайте http://webmastermix.ru/lessons-joomla/134-stranitsa-oshibki-404-v-joomla.html
Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #4 : 23.06.2015, 20:31:12 »

Эврика! Нашел в .htaccess всё-таки место, которое создаёт проблему - листинг всей секции в первом посте приведен, а вот если закомментировать вот эту штуку:
Цитировать
RewriteRule .* index.php [L]
...то при заходе на несуществующую страницу вместо привычного патологического редиректа на главную выдаст:
Цитировать
Not Found
The requested URL /404test.html was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Вопросов однако ещё больше стало:
а) почему не срабатывает встроенная 404-я страница Joomla либо даже та, которую должен выдавать установленный мной плагин Qlue Custom 404?

б) что в итоге делать с этим кодом в .htaccess? Ведь эта "SEF-секция" она как я понимаю, нужна для ЧПУ-ссылок, и при этом она пакостит на 404-ю, редиректя всё на главную. Может быть в index.php надо какие-то параметры передавать в этом RewriteRule чтобы была возможность реализовать 404-ю? Однако в самом index.php вообще не вижу кода, который бы принимал какие-то браузерные параметры, вот в чем засада!
Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #5 : 23.06.2015, 21:34:09 »

Уф, нашел виновника торжества (я-то искренне верил, что [L] в SEF-секции завершает применение правил "реврайта", а судя по всему не завершает и срабатывает строчка дальше вот такая):
Цитировать
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Если эти 2 строки закомментировать, тогда всё работает! Но что хотел прошлый веб-программист (которого уже не найти) сделать такой секцией в .htaccess? Редирект с www на без www? Но почему он взял HTTP_HOST, а не скажем REQUEST_URI?
« Последнее редактирование: 23.06.2015, 21:41:33 от NDanilov2015 » Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #6 : 23.06.2015, 21:58:29 »

Рано радоваться... теперь и без этого правила вместо 404-й главная вылазит, хотя полчаса назад я стабильно получал 404-ю когда его закомментировал! Совсем уже мистика возникает. Shocked
Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #7 : 23.06.2015, 22:52:29 »

Хостер говорит, он тут ни причем. У него свыше таких правил не спускается. Кроме того, я уже писал выше, что если закомментировать строчку в SEF-секции где редирект на index.php, то можно получить 404 Not Found от сервера. Однако у меня есть пример другого сайта, где эта секция абсолютно не мешает родной Джумловской 404-й выскакивать, а серверная не выскакивает при этом.

PS. В .htaccess можно вообще все правила убить, написанные прошлым программистом, кроме исходно Джумловских с которыми на других сайтах 404-я появляется в нормальном виде, и всё равно будет редирект на главную.
« Последнее редактирование: 23.06.2015, 23:02:31 от NDanilov2015 » Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #8 : 23.06.2015, 22:56:28 »

Может быть viurtuemart гадит не по децки?
Записан
voland
Профи
********

Репутация: +488/-86
Offline Offline

Пол: Мужской
Сообщений: 8720


любит наш народ всякое гавно...


« Ответ #9 : 24.06.2015, 00:36:32 »

прошлым программистом
Так может кто-то воткнул где нить в ядро принудительный редирект и всё..
Есть такие.
И вообще - почему 2,5,6 а не 2,5,28?
Записан
SeBun
Практически профи
*******

Репутация: +134/-3
Offline Offline

Пол: Мужской
Сообщений: 2286



« Ответ #10 : 24.06.2015, 12:17:43 »

Попробуйте обноаить версию Joomla, предварительно сделав бекап. Если не поможет, проблема не у хостера а в вашем коде.
Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #11 : 24.06.2015, 13:41:39 »

Всё, проблема с редиректами окончательно решена! Cheesy

Ответ я нашел на зарубежном форуме, рекомендую всем в закладки куда-то сохранить:
https://forum.virtuemart.net/index.php?topic=119171.0
Это действительно VirtueMart пакостит, так решили его разработчики и в новой версии эту особенность лишь смягчили, но не убрали до конца. В общем, в файле /components/com_virtuemart/virtuemart.php в самом конце необходимо найти строку (обычно 110-111):
Код:
$mainframe->redirect(JRoute::_ ('index.php?option=com_virtuemart&view=virtuemart', FALSE));
закомментировать ее и на ее место вписать следующий код:
Код:
JError::raise(E_ERROR,'404','Not found');
$mainframe->close();
Вот тогда будет нормальная 404-я вылезать, которая соответствует тому, что генерит error.php в шаблоне.

Voland писал:
Цитировать
И вообще - почему 2,5,6 а не 2,5,28?
Но ведь 2.5.6 новее чем 2.5.28! Wink

SeBun писал:
Цитировать
Попробуйте обноаить версию Joomla, предварительно сделав бекап. Если не поможет, проблема не у хостера а в вашем коде.
Как оказалось, это VirtueMart пакостил, и заложили в него эту пакость разработчики, которые посчитали что вместо 404-й должна главная вылезти. А почему если бы обновление Joomla не помогло, то проблема была бы не у хостера? (Или Вы опечатались и хотели сказать, что как раз у хостера?)

...с этой проблемой покончено. Но клиент хочет кастомизированную 404-ю, я хочу для этой цели запрячь модуль Qlue Custom 404, установка проходит гладко. Однако при попытке зайти в админку модуля выдаёт:
Цитировать
Fatal error: Call to a member function get() on a non-object in /home/cp062426/public_html/administrator/components/com_qlue404/controller.php on line 31
Код в этом месте гласит:
Код:
class Qlue404Controller extends JControllerLegacy {
....
public function display($cachable = false, $urlparams = false)
{
  ....
  $view   = $this->input->get('view', 'customs'); //Вот тут и возникает ошибка!
  $layout = $this->input->get('layout', 'default');
  $id     = $this->input->getInt('id');
}
Как заставить этот удобный компонент нормально заработать, устранить ошибку?
Записан
SeBun
Практически профи
*******

Репутация: +134/-3
Offline Offline

Пол: Мужской
Сообщений: 2286



« Ответ #12 : 24.06.2015, 14:27:45 »

SeBun писал:А почему если бы обновление Joomla не помогло, то проблема была бы не у хостера? (Или Вы опечатались и хотели сказать, что как раз у хостера?)
Как я написал, так и оказалось - проблема не у хостера и она принципиально не могла быть на стороне хостера. Но я предполагал, что проблема не в магазине а в ваших файлах, поэтому предложил обновление. Кто же мог подумать, что разработчики ВиртоМарта такую бяку устроят... Похвально, что вы нашли ответ!

Как заставить этот удобный компонент нормально заработать, устранить ошибку?
А оно вам надо? Зачем городить какие то компоненты, через которые вас потом и взломают, когда есть способ проще - в htaccess прописать путь до файла, выводящего персональную страницу 404?
Записан
draff
Практически профи
*******

Репутация: +161/-5
Offline Offline

Пол: Мужской
Сообщений: 2657


step by step


« Ответ #13 : 24.06.2015, 14:47:00 »

Цитировать
Но ведь 2.5.6 новее чем 2.5.28!
Нет
Записан
NDanilov2015
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #14 : 26.06.2015, 17:04:41 »

SeBun писал:
Цитировать
А оно вам надо? Зачем городить какие то компоненты, через которые вас потом и взломают, когда есть способ проще - в htaccess прописать путь до файла, выводящего персональную страницу 404?
Да я уже сам сделал, как по ссылке которую мне тут кидали. Всё работает.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet