URL переписать и перенаправить вопрос - PullRequest
1 голос
/ 11 мая 2010

Скажите, что в настоящее время у меня есть URL как:

http://mydomain.com/showpost.php?p=123

Теперь я хочу сделать это красивее:

http://mydomain.com/123/post-title

Я использую apache rewrite, который захватывает сегмент '123' и возвращает URL на

http://mydomain.com/showpost.php?p=123

OK. Здесь проблема. Я хочу перенаправить исходные не красивые URL-адреса, которые были проиндексированы Google, на красивые версии. Я хочу этого, потому что слышал, что Google может наказать меня, если он увидит несколько URL-адресов, указывающих на идентичный контент. Так что мне нужно

перенаправить /showpost.php?p=123 в / 123 / post-title

Это я должен сделать в своем php-коде, потому что Apache никак не может понять 'post-title', но если я добавлю код перенаправления в php-код, то это будет бесконечный цикл, такой как:

Запрос: /showpost.php?p=123

перенаправлено на: / 123 / post-title

переписано в: /showpost.php?p=123

снова перенаправлено на: / 123 / post-title

...

Так и так далее.

Извините, я должен сначала найти решение для Google, но я действительно не знаю, как описать мою ситуацию на английском, чтобы Google дал разумные результаты.

Пожалуйста, помогите мне. Спасибо.

1 Ответ

2 голосов
/ 11 мая 2010

Вы можете установить переменную запроса в своем правиле перезаписи, добавив что-то вроде [E=rewritten:true] в конце строки RewriteRule, чтобы записать факт, что перезапись была выполнена. В вашем PHP вы должны иметь доступ к этому как $_SERVER['rewritten'] и выполнять перенаправление, только если флаг отсутствует.

Кроме того, вы можете использовать правило перезаписи, чтобы перенаправить не симпатичный URL-адрес на симпатичный URL без заголовка сообщения, а затем использовать код приложения для создания другого перенаправления с добавленным заголовком сообщения. Использование двух перенаправлений, конечно, менее желательно, но это лишь временная мера, пока поисковые системы не обновят свои индексы, тогда вы можете удалить ее.

Убедитесь, что вы используете 301 Moved Permanently для перенаправления, кстати.

...