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

Форум Apache

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

 

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

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

тема: ЧПУ и дублирование страниц
 
 автор: uch   (11.06.2013 в 22:20)   письмо автору
 
 

У меня есть самописный сайт, в котором есть страницы такого вида /main.php?id=166
Я решил сделать эти страницы ЧПУ-вида и получился такой адрес /main/166/
В файле htaccess у меня следующий код:

RewriteEngine On
RewriteRule ^main/([0-9]+)/?$ main.php?id=$1


Код рабочий, но ссылки доступны теперь по двум адресам /main.php?id=166 и /main/166/.
Возможно ли убрать дублирование страницы /main.php?id=166? Т.е. сделать так, чтобы при запросе /main.php?id=166 был редирект на страницу ЧПУ /main/166/?
Поиск в гугле не помог, поэтому решил обратиться за помощью.

  Ответить  
 
 автор: Sfinks   (12.06.2013 в 09:51)   письмо автору
 
   для: uch   (11.06.2013 в 22:20)
 

Возможно, но нужно сменить имя файла, обработчика ЧПУ. Иначе редирект зацыклится.
RewriteEngine On

RewriteCond %{QUERY_STRING} ^id=(\d+)$
RewriteRule ^main\.php$ main/%1/ [R=301,L]

RewriteRule ^main/(\d+)/?$ index.php?id=$1

При таких правилах страница также будет доступна по двум адресам, но про новый адрес /index.php?id=1 никто кроме вас, и в том числе и поисковики, знать о нем не будут. А со старого адреса /main.php?id=1 будет внешний редирект на новый адрес с кодом 301, т.е. "переехала навсегда".

  Ответить  
 
 автор: uch   (12.06.2013 в 11:26)   письмо автору
 
   для: Sfinks   (12.06.2013 в 09:51)
 

>Возможно, но нужно сменить имя файла, обработчика ЧПУ. Иначе редирект зацыклится.

Вы имеете в виду переименовать сам php файл? Если я все правильно понял, то поисковикам также будет известен новый адрес и они могут включить его в поисковую выдачу?

  Ответить  
 
 автор: Sfinks   (12.06.2013 в 12:10)   письмо автору
 
   для: uch   (12.06.2013 в 11:26)
 

> Вы имеете в виду переименовать сам php файл?
да, физически переименовать main.php в index.php, или в любой другой (friendly_main.php).

> Если я все правильно понял, то поисковикам также будет известен новый адрес
> и они могут включить его в поисковую выдачу?

Поисковики сейчас знают адреса типа /main.php?id=1 -верно
При следующем посещении этого адреса, поисковик получит информацию, что страница переехала на новый адрес: /main/1/ и перейдет на него.
Т.к. он получит заголовок 301, то не "также будет известен новый адрес", а он должен будет в индексе заменить старый на новый и оставить только новый.

  Ответить  
 
 автор: uch   (12.06.2013 в 23:36)   письмо автору
 
   для: Sfinks   (12.06.2013 в 12:10)
 

Благодарю вас за подробный ответ.
Скажите, а если я просто сделаю ЧПУ и оставлю старое название файла, поисковики постепенно обновят старые ссылки на ЧПУ? Или все же лучше переименовать обработчик и указать поисковику о том, что ссылка переехала на новый адрес?

  Ответить  
 
 автор: Sfinks   (13.06.2013 в 09:07)   письмо автору
 
   для: uch   (12.06.2013 в 23:36)
 

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

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

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