Редирект для ошибки 500

erik87

Старатель
Регистрация
30 Сен 2008
Сообщения
206
Реакции
10
Как сделать редирект страницы /?format=feed&type=rss на /discussions/feed?type=rss.
Redirect 301 для .htaccess на помогает.
 
Как сделать редирект страницы /?format=feed&type=rss на /discussions/feed?type=rss.
Redirect 301 для .htaccess на помогает.
Делали вот так?
Включить модуль Apache mod_rewrite.
Включить ReWriteEngine в модуле mod_rewrite.
Код:
Options +FollowSymLinks
RewriteEngine on

Код:
Redirect 301 /?format=feed&type=rss http://www.ваш сайт.ru/discussions/feed?type=rss

Попробуйте вариант php редиректа :
В начало страницы (обязательно до всех echo и print)

Код:
<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref='?format=feed&type=rss')
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.ваш сайт.ru/discussions/feed?type=rss');
exit();
?>
 
Немного неясен вопрос. При переходе на определенную страницу у вас возникает ошибка 500? Имхо, лучше разобраться сначала, почему скрипт дает такую ошибку. Кроме того, разве при 500 ошибке файл htaccess работает вообще? Если на сервере ошибка и он прекращает выполнение вашего потока? Я не силен в апаче, но чисто логически.
 
Немного неясен вопрос. При переходе на определенную страницу у вас возникает ошибка 500? Имхо, лучше разобраться сначала, почему скрипт дает такую ошибку. Кроме того, разве при 500 ошибке файл htaccess работает вообще? Если на сервере ошибка и он прекращает выполнение вашего потока? Я не силен в апаче, но чисто логически.
Да, при переходе на /?format=feed&type=rss - ошибка 500. Страница есть на /discussions/feed?type=rss

Leha76,

При следующих настройках - без изменений:
Код:
Options +FollowSymLinks
RewriteEngine on

Сайт на Джумле 2.5. Может посоветуете, куда попробовать вставить ваш код:
Код:
<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref='?format=feed&type=rss')
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.ваш сайт.ru/discussions/feed?type=rss');
exit();
?>
 
Сайт на Джумле 2.5. Может посоветуете, куда попробовать вставить ваш код:
Код:
<?
header('Location: http://www.ваш сайт.ru/discussions/feed?type=rss');
exit();
?>
Ну вставить то можно в шаблон по идее на самый самый верх, но это не дело по сути.
Почитайте вот это вот
 
Да, при переходе на /?format=feed&type=rss - ошибка 500. Страница есть на /discussions/feed?type=rss

Leha76,

При следующих настройках - без изменений:
Код:
Options +FollowSymLinks
RewriteEngine on

Сайт на Джумле 2.5. Может посоветуете, куда попробовать вставить ваш код:
Код:
<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref='?format=feed&type=rss')
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.ваш сайт.ru/discussions/feed?type=rss');
exit();
?>
Вставить то можете хоть в index.php, но вам похоже придется сначала разобраться с причиной 500 ошибки, здесь я соглашусь с gothmog. У вас лента новостей правильно настроена? Да на Джумле 2.5 вообще нет необходимости для написания перенаправления вручную. Есть для этого встроенный компонент, в котором все перенаправления сохранятся при обновлении.
 
Причина ошибки 500 думаю в том, что на главной у нас только модули и баннеры, а лента новостей на /discussions/feed?type=rss. Поэтому и собираюсь сделать редирект.
Код:
<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref='?format=feed&type=rss')
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.ваш сайт.ru/discussions/feed?type=rss');
exit();
?>
- не помогает.
 
Причина ошибки 500 думаю в том, что на главной у нас только модули и баннеры, а лента новостей на /discussions/feed?type=rss. Поэтому и собираюсь сделать редирект.
Код:
<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref='?format=feed&type=rss')
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.ваш сайт.ru/discussions/feed?type=rss');
exit();
?>
- не помогает.
У меня в .htaccess упоминается feed только здесь:
Код:
# 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]
В коде страницы у меня присутствуют две ссылки прямо под тегом <title>:
Код:
<link href="/?format=feed&amp;type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
  <link href="/?format=feed&amp;type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
Обе открываются без ошибок. И содержат данные из статьи, размещенной на главной странице.
Но при этом в компоненте com_newsfeeds у меня никаких лент новостей нет.
Попробуйте разместить на главной статью с одной строчкой текста и посмотрите на результат.
 
Есть индусский вариант, но если ничего не помогает (при серверных ошибках хтакцесс может тупо не срабатывать), я бы сделал так - просто на серверной странице 500 ошибки поставил яваскрипт-редирект куда надо. Т.е. алгос такой - юзер попадает на проблемную страницу, сервер выдает ошибку 500 (хтмл и js код), браузер делает переход куда надо.

Но лучше все таки разобраться, почему идет эта ошибка. Логи ошибок посмотрите, куда-то же это должно записываться. У меня такое было на некоторых скриптах, когда хостер перешел на РНР 5.4 и часть старых функций стали с deprecated => fatal error.
 
Ошибка 500 - внутренняя ошибка сервера. Вызвана бывает обычно неверной конфигурацией, в данном случае скорее всего виртуалхоста или того же редиректа. Лог веб-сервера с описанием ошибки, пожалуйста, покажите.

UPD:

Заметил ошибку в вашем коде: if ($ref='?format=feed&type=rss').

PHP:
<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref=='?format=feed&type=rss')
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.ваш сайт.ru/discussions/feed?type=rss');
exit();
?>
 
Операция сравнения в php "==", или "===" (без сведения типов).
 
Назад
Сверху