- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Нужно поменять урлы вида http://www.site.ru/services.php?num=120 на ЧПУ вида: http://www.site.ru/naimenovanie-uslugi/
Через mod_rewrite это делается так:
RewriteRule ^naimenovanie-uslugi/$ services.php?num=120 - и все - уже можно открывать страницу http://www.site.ru/naimenovanie-uslugi/ и видеть старую страницу уже по новому адресу.
Но на старую страницу закупались ссылки и нужно сделать 301 редирект со старой страници на новую. Как ни пробовал, например:
Redirect 301 /services.php?num=120 http://www.site.ru/naimenovanie-uslugi/
RewriteRule ^services.php?num=120$ /naimenovanie-uslugi/ [R=301,L]
- не редиректит, старая страница http://www.site.ru/services.php?num=120 по-прежнему открывается.
Здесь:
http://www.kass.ws/2007/09/13/301-redirect-rukovodstvo-po-pravilnoy-seo-ekspluatatsii/
и в аналогичных статьях ответа не нашел. Подскажите, плиз, как это делается.
savage добавил 18.10.2011 в 22:26
Получилось отредиректить так:
RewriteRule ^services.php?num=120$ http://www.site.ru/naimenovanie-uslugi/? [L,R=301]
RewriteRule ^naimenovanie-uslugi/$ /services.php?num=120
Редиректить-то он в браузере редиректит, а ответ сервера 200, видимо из-за того, что страница существует и получается переадресация на саму себя. Как получить 301 ответ?
savage добавил 19.10.2011 в 00:22
Удалось получить 301 ответ сервера, но тогда браузер не перенаправляется на новый урл, а выдается невозможно отобразить страницу.
удалено: ошибка
Была такая же проблема, надо было с http://site.ru/page.php?id=120 на http://site.ru/id120
Кучу мануалов прочитал, ничего не помогло) Только таким образом смог:
Добавил в исходном .php файле (page.php):
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://site.ru/id120");
exit();
}
У вас соответственно в services.php проверять "$num"
Надеюсь, что помог) Если разберетесь как через .htaccess - отписывайте тут)
Vigar, cпасибо, такой вариант тоже пробовал, но из-за того, что код не в начало файла вначале разместил, он не работал корректрно. И еще в вашей интерпретации 301 ответ сервер отдает, но на страницу в браузере не редиректит, похоже из-за того, что в .htaccess прописано:
RewriteRule ^naimenovanie-uslugi/$ /services.php?num=120
и, соотвественно, как только срабатывает services.php?num=120 - опять редирект в коде php, получается закольцованность.
Заработало так:
if (($_GET['num']==120)&&($REQUEST_URI!='/naimenovanie-uslugi/'))
в этом случае уже когда урл правильный редирект не срабатывает. Через htaccess похоже в любом случае получается закольцованность - как сделать так и не нашел пока.
По .htaccess нашел хороший компактный мануал, может кому пригодится, лучше не видел:
http://www.beget.ru/art9.html
Судя по нему - должно работать так:
RewriteCond %{REQUEST_URI} ^/services.php?num=120*
RewriteRule ^(.*)$ http://www.site.ru/naimenovanie-uslugi/? [R=301]
RewriteRule ^naimenovanie-uslugi/$ services.php?num=120 [L]
Но код ответа сервера почему-то 200, а не 301. В итоге пока работает как нужно только php-ный редирект.
Vigar, cпасибо, такой вариант тоже пробовал, но из-за того, что код не в начало файла вначале разместил, он не работал корректрно. И еще в вашей интерпретации 301 ответ сервер отдает, но на страницу в браузере не редиректит, похоже из-за того, что в .htaccess прописано:
RewriteRule ^naimenovanie-uslugi/$ /services.php?num=120
Возможно, у меня просто .htaccess чист от 301 редиректов, только на www. редирект, поэтому в браузере все ок)
По .htaccess нашел хороший компактный мануал, может кому пригодится, лучше не видел:
http://www.beget.ru/art9.html
Судя по нему - должно работать так:
RewriteCond %{REQUEST_URI} ^/services.php?num=120*
RewriteRule ^(.*)$ http://www.site.ru/naimenovanie-uslugi/? [R=301]
RewriteRule ^naimenovanie-uslugi/$ services.php?num=120 [L]
Но код ответа сервера почему-то 200, а не 301. В итоге пока работает как нужно только php-ный редирект.
Должно, но у меня тоже не работает)) Спасибо за ссылку, будет время - попробую еще раз разобраться, но пока через php работает - и то хорошо)