- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Делаю весь сайт папками, то есть хочу, что бы все ссылки были вида /papers/1. Это означает:
1) Редирект для всех, кто захочет зайти на papers.php?xxx на /papers/
2) Директиву на обработку всех запросов /papers/ и /papers/1 скриптом papers.php
Пишу следующее в .htaccess, получаю в браузере циклическую ссылку. Подскажите, в чем проблема?
RewriteEngine On
RewriteBase /
RewriteRule ^papers.php/?$ /papers/$1 [R=301,L]
RewriteRule ^papers/?$ papers.php [QSA,L]
RewriteRule ^papers/([0-9]{0,})/?$ papers.php?id=$1 [QSA,L]
RewriteEngine on
Options +FollowSymlinks -Indexes
php_flag magic_quotes_gpc off
RewriteBase /
RewriteRule ^papers/([0-9]+)(/?) papers.php?id=$1 [L]
RewriteRule ^papers/(/?) papers.php [L]
ужасная проблема
RewriteRule ^papers$ papers.php [L]
RewriteRule ^papers/$ papers.php [L]
RewriteRule ^papers/([0-9]*)$ papers.php?id=$1 [L]
RewriteRule ^papers/([0-9]*)/$ papers.php?id=$1 [L]
разница в закрывающем слэше, чтобы работал как адрес
так и
RewriteEngine on
Options +FollowSymlinks -Indexes
php_flag magic_quotes_gpc off
RewriteBase /
RewriteRule ^papers/([0-9]+)(/?) papers.php?id=$1 [L]
RewriteRule ^papers/(/?) papers.php [L]
Спасибо, но это не решает задачу 1). При запросе по адресу papers.php?xxx редирект на /papers/ не происходит
Спасибо, но это не решает задачу 1). При запросе по адресу papers.php?xxx редирект на /papers/ не происходит
Ну правильно, вы же убрали редирект )
RewriteBase /
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^(.*)$ /papers/%1? [L,R=301]
RewriteRule ^papers.php$ /papers/ [L,R=301]
RewriteRule ^papers/([0-9]+)(/?) papers.php?id=$1 [L]
RewriteRule ^papers/(/?) papers.php [L]
Ну правильно, вы же убрали редирект )
RewriteBase /
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^(.*)$ /papers/%1? [L,R=301]
RewriteRule ^papers.php$ /papers/ [L,R=301]
RewriteRule ^papers/([0-9]+)(/?) papers.php?id=$1 [L]
RewriteRule ^papers/(/?) papers.php [L]
Все равно остается циклическая ссылка. И, так же, что делают следующие две строки?
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^(.*)$ /papers/%1? [L,R=301]
Infinity7, попробуйте так:
строки
RewriteCond %{ENV:REDIRECT_STATUS} ^$
нужны чтобы не происходило зацикливание (чтоб следующее правило не применялось, если преобразование уже сделано на последнем проходе по .htaccess)
Первые 2 строки не нужны, если выше в .htaccess они уже есть
Вторые 2 строки делают 301 редирект при обращении к papers.php на papers/ , с удалением строки запроса: именно так я понял пункт 1) в топике
Третья и четвертая пары строк делают реврайт на papers.php (без id третья и с id четвертая) при запросе "papers" и "papers/любое_число" с возможным завершающим слешем. При таких обращениях строка запроса добавляется к новому адресу.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} (id=([0-9]+))?
RewriteRule ^papers\.php$ /papers/%2? [L,R=301]
RewriteRule ^papers/?$ papers.php [L]
RewriteRule ^papers/([0-9]+)/?$ papers.php?id=$1 [L]
Спасибо большое всем! Теперь работает.
Условие, которого мне не хватало, что бы избежать зацикливания, это
RewriteCond %{ENV:REDIRECT_STATUS} ^$