Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Редирект 301 Apache
 
 автор: volodumir   (17.03.2012 в 02:30)   письмо автору
 
 

Здравствуйте,

В общем, в двух словах:

Был адрес такой:
http://site.ru/?section=news&time=present&cat=2&idnews=88401&page=1
Я сделал такой:
http://site.ru/news/present/2/88401/1

Теперь надо сделать, чтоб при заходе на старую страницу меня перекидывало на новую редиректом.

Сейчас работает ЧПУ. Так же остались функционировать старые адреса. Надо, чтоб заходя на старый адрес, меня перекидывало на новый, то есть чтоб для поисковой системы не существовало двух страниц с одинаковым контентом.

На сколько я понимаю, это 1-2 строки в htaccess. Но у меня реализовать не получилось.

Вот мой файл .htaccess


AddDefaultCharset windows-1251

ErrorDocument 404 http://site.ru



Order allow,deny

Allow from all



Options -Indexes

Options +FollowSymLinks

RewriteEngine on

RewriteBase /

RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)/([0-9]+)/([0-9]+) /?section=$1&time=$2&cat=$3&idnews=$4&page=$5 [L,QSA]

RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+) /?section=$1&time=$2&cat=$3 [L,QSA]

  Ответить  
 
 автор: Sfinks   (17.03.2012 в 10:13)   письмо автору
 
   для: volodumir   (17.03.2012 в 02:30)
 

У вас
RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)/([0-9]+)/([0-9]+) /?section=$1&time=$2&cat=$3&idnews=$4&page=$5 [L,QSA]
- это текущие ЧПУ. Я правильно понимаю?

Для всех старых адресов нужно создать правила вида:
RewriteCond %{QUERY_STRING} ^section=([a-z]+)&time=([a-z]+)&cat=(\d+)&idnews=(\d+)&page=(\d+)$
RewriteRule ^$ %1/%2/%3/%4/%5? [R=301,L]

Вставлять это следует перед существующими правилами ЧПУ. Но, возможно, чтоб не случилось циклического редиректа ваши существующие правила нужно будет исправить так, чтоб они явно указывали на конкретный файл. Типа:
RewriteRule ^([a-z]+)/([a-z]+)/(\d+)/(\d+)/(\d+) index.php?section=$1&time=$2&cat=$3&idnews=$4&page=$5 [L,QSA]
кстати слеш в начале адреса редиректа указывать не надо. Я убрал его в коде выше.

P.S. кстати, а зачем у вас QSA? Что в адресе http://site.ru/news/present/2/88401/1 может быть еще GET-запрос? Т.е. http://site.ru/news/present/2/88401/1?var1=val1&var2=val2 возможно? Если нет - QSA уберите.

  Ответить  
 
 автор: volodumir   (17.03.2012 в 15:32)   письмо автору
 
   для: Sfinks   (17.03.2012 в 10:13)
 

Ошибка:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@site.ru and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

  Ответить  
 
 автор: Sfinks   (17.03.2012 в 19:17)   письмо автору
 
   для: volodumir   (17.03.2012 в 15:32)
 

А в логе что? Эти 5 строк все видели. их можно было 3мя цифрами описать - 500. Вся информация в логе апача.

  Ответить  
 
 автор: volodumir   (17.03.2012 в 20:00)   письмо автору
 
   для: Sfinks   (17.03.2012 в 19:17)
 

Спасибо я разобрался.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования