- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Дали задачу: сделать ЧПУ и сделать редирект со старых адресов на новые(чпу).
С рекурсией вроде разобрался. Основная проблема стала с редиректом с динамических страниц.
Долго мучался, читал, искал... вот к чему пришел:
1.RewriteEngine on
2.#создание из страницы вида www.site.ru/productions.php?view=category&id=1 страницы вида www.site.ru/category/1/
3.RewriteRule ^category/([0-9]+)/$ /productions.php?view=category&id=$1&norec [L]
4.#редирект, если перейти по ссылке www.site.ru/productions.php?view=category&id=1 - на созданную (чпу) www.site.ru/category/1/
5.RewriteCond %{QUERY_STRING} view=category&id=1$
6.RewriteRule ^productions.php$ /category/1/? [L,R=301]
Соответственно несколько вопросов:
1. Чтобы не было рекурсии, добавил в строке 3. переменную &norec.
Правильно ли это или это можно сделать по-другому, если можно то как?
2. 5-ая и 6-ая строка, отвечающие за редирект со старых адресов написана для одной страницы, где id=1? как переписать данный код, чтобы работала по шаблону, т.е. id=1 -> category/1/ , id=2 -> category/2/ и т.д.
3. Пробовал делать переадресацию с динамической страницы так:
RewriteRule ^productions\.php\?view=category&id=1$ /category/1/ [L,R=301]
но переадресация не происходит, такое ощущение что экранирование знака ? не работает.
Можно ли сделать переадресацию таким образом, если да, то как?
Прошу также указать на имеющиеся ошибки при написании мною htaccess.
1. Чтобы не было рекурсии, добавил в строке 3. переменную &norec.
Правильно ли это или это можно сделать по-другому, если можно то как?
Рекурсии быть не должно и без norec
2. 5-ая и 6-ая строка, отвечающие за редирект со старых адресов написана для одной страницы, где id=1? как переписать данный код, чтобы работала по шаблону, т.е. id=1 -> category/1/ , id=2 -> category/2/ и т.д.
3. Пробовал делать переадресацию с динамической страницы так:
RewriteRule ^productions\.php\?view=category&id=1$ /category/1/ [L,R=301]
но переадресация не происходит, такое ощущение что экранирование знака ? не работает.
Можно ли сделать переадресацию таким образом, если да, то как?
Знак вопроса не экранируется.
Ваш способ с QUERY_STRING единственно верный.
1.RewriteCond %{QUERY_STRING} view=category&id=(\d+)$
2.RewriteRule ^productions.php$ /category/%1/? [L,R=301]
что такое (\d+) в строке 1? Пробовал, так не сработало.
что делает знак "?" в конце 2-ой строки?
попробовал так:
1.RewriteCond %{QUERY_STRING} view=category&id=([0-9]+)$
2.RewriteRule ^productions.php$ /category/%1/? [L,R=301]
Работает.
%1, как я понял - это переменная из строки RewriteCond (по аналогии с $1)
Ну с этим вроде разобрался. Спасибо огромное.
Рекурсия без &norec - есть. Ниже пишу рабочий код преобразования.
Если бы кто-то подсказал как с рекурсией по-другому разобраться, был бы очень признателен.
---код---
1. RewriteEngine on
2.RewriteRule ^category/([0-9]+)/$ /productions.php?view=category&id=$1&norec [L]
3.RewriteCond %{QUERY_STRING} view=category&id=([0-9]+)$
4.RewriteRule ^productions.php$ /category/%1/? [L,R=301]
И еще вопрос:
правильно ли я понимаю: после преобразования url соответствующего шаблону все правила запускаются с первого зановно?