Просмотр полной версии : TYPO3/RealURL возвращают дубли главной страницы для неправильных url вместо 404
dmartynenko
01.06.2010, 15:21
Обнаружилась проблема с индексацией в google - дублируется главная страница сайта при указании опредленного неправильного адреса.
А именно если указать после / текст + ":/" или просто ":/", то возвращается обычное содержимое главной страницы.
Причем страницы более глубоких уровней работают правильно - на example.com/page1/http:/ выдается TYPO3-шный ответ/страница 404
Пример:
http://typo3.org/
http://typo3.org/http://
http://typo3.org/dfgjkfg:/
Кто-нибудь предложит TYPO3 варианты решения?
Единственно что пока приходит в голову - через .htaccess
UPDATE:
Быстрое решение - в .htaccess прописал:
RedirectMatch 404 ^/([^/]*?)(:/)(.*)$
В результате на ошибочные URL выдается апачевский ответ 404, на более глубоких уровнях 404 выдает TYPO3
попробуй использовать этот параметр в localconf.php
$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] =
он отвечает за эти задачи
как пример
$TYPO3_CONF_VARS["FE"]["pageNotFound_handling"] = 'http://www.example.com/not-found-404.html';
$TYPO3_CONF_VARS["FE"]["pageNotFound_handling_statheader"] = 'HTTP/1.1 404 Not Found';
dmartynenko
02.06.2010, 12:55
Эти настройки естесвенно заданы, поэтому везде 404 выдает TYPO3 (о чем я и написал в первом посте).
А вот на корневой странице url с ":/" обрабатываются неправильно. Попробуйте у себя...
у меня резултать вполне ожидаемый
http://astroelite.de/:/
или я чтот не так понял?
вывод формы логина в данном случае связан с не законченным определителем причины недоступности страницы, в других вариантах он выводит стартовую страницу
просто у меня необходимость к закрытым областям выводить именно страницу логина
dmartynenko
02.06.2010, 13:32
Возможно у вас более новые версии TYPO3 и RealURL, либо обработчик 404 в pageNotFound_handling прописан свой (а не просто url для редиректа), и поэтому все отрабатыват правильно.
Но вот вам реальный пример неправильного поведения:
http://typo3.org/:/
http://typo3.org/http:/
Везде http ответы 200 и одинаковое содержание - главная страница.
А вот так - http://typo3.org/http - ответ 404.
в моем случае стоит свой обработчик дабы разделить не разрешенные и не существующие страницы
в принципе это можно увидеть и по возвращаемым хедерам
404 и 403
dmartynenko
02.06.2010, 13:38
Можете привести ваш пример в качестве решения этой проблемы? :)
Я думаю для форумчан будет полезно.
на данный момент это выглядит так
$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = 'USER_FUNCTION:fileadmin/404.php:user_pageNotFound->pageNotFound';
и сам файл 404.php
define(LOGIN_URL, "http://astroelite.de/login.html");
define(NOTFOUND_URL, "http://astroelite.de");
class user_pageNotFound {
function pageNotFound($param, $ref) {
if (count($param["pageAccessFailureReasons"]["fe_group"])) {
header("HTTP/1.0 403 Forbidden");
$GLOBALS['TSFE']->fe_user->setKey('ses', 'redirect', $_SERVER['REQUEST_URI']);
$GLOBALS['TSFE']->storeSessionData();
$url = LOGIN_URL;
} else
$url = NOTFOUND_URL;
print file_get_contents($url);
}
}
но дабы не вводить всех в заблуждение - вариант не конечный так как в некоторых случаях (в частности в примере с ":/") он не определяет причину и считает что страница запрещена, но решение этому я уверен есть, просто не на все хватает время - проектов много, а клиента пока так устраивает
забыл пояснить
$GLOBALS['TSFE']->fe_user->setKey('ses', 'redirect', $_SERVER['REQUEST_URI']);
$GLOBALS['TSFE']->storeSessionData();
для того чтоб после авторизации принять эти данные и переадресовать авторизированного пользователя на запрошенную страницу
логин у меня свой - берет авторизацию и данные пользователя по wsdl с центрального сервера, так что для вашего случая всего придется переделывать стандартный логин
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot