| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование Web серверов и Web служб > перенаправление на чпу |
| Автор: xarakiry 26.9.2012, 09:16 |
| Передалал ссылочки на сайте на чпу. Теперь мне нужно чтобы если пользователь или поисковая система заходили по старой ссылочке то перенаправлялся на новый урл. Вот мне хотябы на примере моей регулярки обьясните если кто знает RewriteRule ^([-a-z]+)$ index.php?lang=$1 вот это самый простой чпу выглядит так /ru или там /en |
| Автор: xarakiry 26.9.2012, 09:56 |
| Чтобы скрыт старый некрасивый адрес. Чтобы поисковик выбросил старые урлы быстрее и да и вообще не хочу чтобы они светились |
| Автор: ksnk 26.9.2012, 09:58 |
| Роботы сами забудут старые ссылки со временем. Из закладок пользователей старые ссылки не удалить. За что идет борьба? |
| Автор: xarakiry 26.9.2012, 10:04 |
| Сайт новый, месяца нет, ни о каких закладках речи идти не может. даже если они есть это частный случай и во внимание не принимается. Мне нужно, решение Если кто знает прошу помочь. |
| Автор: ksnk 26.9.2012, 10:26 |
| На уровне htaccess такую задачу не решить. Так он уже занят ОБРАТНОЙ задачей - из "чпу" делает "нормальный" адрес. Перенаправление нужно делать уже на php. Понять, каким образом пришли на сайт можно с помощью $_SERVER['REQUEST_URI']. Просто посмотреть - он "новый" или "старый" и перенаправить 301 хидером если нужно. |
| Автор: skyboy 26.9.2012, 10:26 |
| за перенаправление указывает http://httpd.apache.org/docs/current/rewrite/flags.html#flag_r для правила добавить надо RewriteCond на проверку оригинального запрошенного УРЛ. не помню уж, но какое-то из доступных для проверки переменных перезаписывается в процессе выполнения RewriteRule правил. |
| Автор: xarakiry 26.9.2012, 11:31 | ||
| Я делал RewriteRule ^([-a-z]+)$ index.php?lang=$1 [R=301] Только он мне наоборот из чпу в обычный урл перенаправляет. А нужно наоборот. Добавлено через 58 секунд
А что .htaccess это не сделать ? |
| Автор: skyboy 26.9.2012, 22:26 | ||
ну, так и поменяй местами. а перед RewriteRule влепи RewriteCond, чтоб перенаправляло только запросы, которые и пришли такими. и не те, которые mod_rewrite на прошлом шаге заменил |