Страницы вида: сайт/index.php/страница код 200OK
Настроены ЧПУ и корректно работают, НО:
Страницы вида: сайт/index.php/страница отдают всегда код 200 ОК (даже если такой страницы нет).
Помимо этого, всегда отображается главная страница, даже если страница существует, например есть страница сайт/оплата со своим контентом, по адресу сайт/index.php/оплата откроется главная и отдаст код 200 ОК.
В чем может быть проблема, и как ее решить?
MODX Revo 2.5.7 php7.1
Страницы вида: сайт/index.php/страница отдают всегда код 200 ОК (даже если такой страницы нет).
Помимо этого, всегда отображается главная страница, даже если страница существует, например есть страница сайт/оплата со своим контентом, по адресу сайт/index.php/оплата откроется главная и отдаст код 200 ОК.
В чем может быть проблема, и как ее решить?
MODX Revo 2.5.7 php7.1
Комментарии: 6
Есть такая проблема, можно решить через небольшой плагин, или через .htaccess
<?php
switch ($modx->event->name) {
case 'OnHandleRequest':
if (strpos($_SERVER['REQUEST_URI'],'index.php') !== false && $modx->context->get('key') != 'mgr') {
if (!empty($_GET['id'])) {
$id = (int)$_GET['id'];
if (!$modx->getCount('modResource', array('id' => $id, 'published' => 1, 'deleted' => 0))) {
$modx->sendErrorPage();
}
} else {
$id = $modx->getOption('site_start', null, 1);
}
$modx->sendRedirect($modx->makeUrl($id),array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
break;
}
Спасибо, вы не подскажите как это сделать через .htaccess или как использовать плагин? Он должен вызываться по событию? И мне кажется стоит делать редирект на страницу 404, а то он всегда на главную редиректит
Вешаете на событие OnHandleRequest, или через файл .htaccess можна так.
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
Через .htaccess работает еще лучше, спасибо большое!
Не за что!
Повесил на событие OnHandleRequest
Попробую через .htaccess
<?php
if (strpos($_SERVER['REQUEST_URI'],'index.php') !== false && $modx->context->get('key') != 'mgr') {
$modx->sendErrorPage();
}
Работает отличноПопробую через .htaccess
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.