Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
32 / 32 / 5
Регистрация: 15.11.2010
Сообщений: 166
1

Настройка ЧПУ для двух правил

04.02.2013, 22:00. Показов 2459. Ответов 24
Метки нет (Все метки)

Добрый день всем.
Второй день разбираюсь с ЧПУ (Rewrite)
Нужно http://www.wellsait.ru/page/html преобразовать в http://www.wellsait.ru/page.php?url=html
и
http://www.wellsait.ru/katalog/html преобразовать в http://www.wellsait.ru/katalog.php?page=html
файл .htaccess
PHP
1
2
3
4
5
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/katalog/(.*)$
RewriteRule ^katalog\/(.*)/?$ katalog.php?page=$1 [L,QSA]
RewriteCond %{REQUEST_URI} ^/page/(.*)$
RewriteRule ^page\/(.*)/?$ page.php?url=$1 [L,QSA]
При этом работает только wellsait.ru/page/
Подскажите, что не так?
Нужно, чтобы работало для двух страниц.
Спасибо.

Добавлено через 4 часа 5 минут
Вобщем, как-то всё само сабой и заработало.
Вот ещё хорошая подробная статья по работе mod_rewrite
http://habrahabr.ru/company/sp... og/129560/

Добавлено через 4 часа 16 минут
Теперь следующая проблема:
файл .htaccess
PHP
1
2
RewriteCond %{QUERY_STRING} ^url=([_a-z]*)$ 
RewriteRule ^page\.php$ /page/%1 [R=301,L]
на выходе: http://www.wellsait.ru/page/html?page=html
Как избавится от QUERY_STRING (?page=html) в конце строки?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2013, 22:00
Ответы с готовыми решениями:

Настройка чпу для самописного скрипта
Каким образом настроить обработку адресов для самописного скрипта??? На сайте есть каталог -...

Настройка 301 редиректа для ЧПУ страниц
У меня такая проблема. Интернет магазин на битриксе, переезжаем на ЧПУ страницы. Была структура на...

Настройка ЧПУ для вывода бренда и артикула товара
Как настроить ЧПУ так чтобы вместо названия товара выводился бренд и артикул как на этой ссылке:...

Настроить ЧПУ 1c bitrix для двух разделов
Добрый день Всем! Подскажите Уважаемые. Как настроить ЧПУ вида: Исходный вид страницы...

24
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 00:57 2
Цитата Сообщение от Evgeniy71rus Посмотреть сообщение
Теперь следующая проблема:
Зачем вам это???
0
32 / 32 / 5
Регистрация: 15.11.2010
Сообщений: 166
05.02.2013, 08:37  [ТС] 3
Чтобы ПС переиндексировали страницы, которые есть в индексе "page.php?url=html" редерект "page/html".
0
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 11:51 4
Evgeniy71rus, Будет бесконечный редирект так как:
page/что-нибудь будет реврайтится на page.php?url=что-нибудь который будет редиректися на page/что-нибудь который будет реврайтится на page.php?url=что-нибудь который будет редиректися на page/что-нибудь который будет реврайтится на page.php?url=что-нибудь который будет редиректися на page/что-нибудь который...
И так бесконечно
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16831 / 6709 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
05.02.2013, 11:59 5
Это и должно работать, других вариантов, насколько помню, нет.
Код
RewriteCond %{QUERY_STRING} ^url=([A-z]+)$ 
RewriteRule ^page\.php$ /page/%1 [R=301,L]
Илья Федин, извините, но не городите чушь про вечные редиректы, не должно их там быть
1
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 12:01 6
Цитата Сообщение от KOPOJI Посмотреть сообщение
не городите чушь
Да, там же RewriteCond
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16831 / 6709 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
05.02.2013, 12:05 7
Илья Федин, ..и?

Добавлено через 1 минуту

Не по теме:

у меня, наверное, неправильный сайт, если работает с редиректом подобного рода.. :facepalm:

0
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 12:15 8
KOPOJI, И у меня не работает
Код
CharsetSourceEnc UTF-8
CharsetDefault CP866
RewriteEngine on
RewriteCond %{REQUEST_URI} ^\/$
RewriteRule ^.*$ dududududu:p.hihi
RewriteCond %{REQUEST_URI} ^\/dududududu:p\.hihi$
RewriteRule ^.*$ /
500 Internal Server Error

Добавлено через 2 минуты
Сделал так:
Код
CharsetSourceEnc UTF-8
CharsetDefault CP866
RewriteEngine on
RewriteCond %{REQUEST_URI} ^\/$
RewriteRule ^.*$ dududududu:p.hihi
RewriteCond %{REQUEST_URI} ^\/dududududu:p\.hihi$
RewriteRule ^.*$ / [R=301]
Неверное перенаправление на странице







Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.





Эта проблема может возникать при отключении или запрещении принятия кук.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16831 / 6709 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
05.02.2013, 12:35 9
Илья Федин, посмотрите код, про который я писал, и затем посмотрите на свой.
0
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 12:43 10
KOPOJI,
Можно прямо? Я не понимаю
0
32 / 32 / 5
Регистрация: 15.11.2010
Сообщений: 166
05.02.2013, 12:49  [ТС] 11
Спасибо, я наверно понял
За счет того, что в конце прописывается QUERY_STRING (?page=html) зациклевание и не происходит.
Если убрать (добавить "?")
PHP
1
RewriteRule ^page\.php$ /page/%1? [R=301,NC,L]
то получаем Moved Permanently (Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится)
Добавил "&"
PHP
1
RewriteRule ^page/(.*)/?$ page.php?url=$1& [L,QSA]
Всё заработало как надо.
Хотелось бы услыжать мнение профи:
Стоит ли с этим заморачиваться на сервере (пока это на денвере) и принесет ли это положительный результат?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16831 / 6709 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
05.02.2013, 14:36 12
Илья Федин,
Кликните здесь для просмотра всего текста
Цитата Сообщение от Илья Федин Посмотреть сообщение
Можно прямо? Я не понимаю
Код, про который я писал:
Цитата Сообщение от KOPOJI Посмотреть сообщение
Код
RewriteCond %{QUERY_STRING} ^url=([A-z]+)$ 
RewriteRule ^page\.php$ /page/%1 [R=301,L]
Ваш код:

Цитата Сообщение от Илья Федин Посмотреть сообщение
Код
CharsetSourceEnc UTF-8
CharsetDefault CP866
RewriteEngine on
RewriteCond %{REQUEST_URI} ^\/$
RewriteRule ^.*$ dududududu:p.hihi
RewriteCond %{REQUEST_URI} ^\/dududududu:p\.hihi$
RewriteRule ^.*$ /
Вы видите хотя бы одну одинаковую строчку? У Вас есть проверка QUERY_STRING ? Что Вы тогда не понимаете?

Цитата Сообщение от Evgeniy71rus Посмотреть сообщение
Если убрать (добавить "?")
это уже ошибка логики. "Если GET-параметры подпадают под регулярное выражение (page=...), то перекинуть сюда или сюда". А куда перекинуть? Ну как-то так, образно говоря..
Цитата Сообщение от Evgeniy71rus Посмотреть сообщение
Добавил "&"
насчет этого, я не знаю, почему, но было что-то типа бага (или я неверно понимаю принцип работы) с постоянным редиректом, только добавляли просто переменную:
Код
RewriteRule ^page/(.*)/?$ page.php?url=$1&foo [L,QSA]
По поводу того, стоит ли - я считаю, что да Хотя бы для восприятия человеком - когда переиндексирует, будут нормальные ссылки в поиске прописаны.

P.S. и лучше так, имхо
Код
RewriteRule ^page/([^/]+)/?$ page.php?url=$1&foo [L,QSA]
0
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 14:38 13
Цитата Сообщение от KOPOJI Посмотреть сообщение
У Вас есть проверка QUERY_STRING ?
А если нету GET-параметров?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16831 / 6709 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
05.02.2013, 14:39 14
Илья Федин, если нету гет-параметров, то и под эту RewriteCond не попадет
0
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 14:40 15
KOPOJI, И что же тогда делать?
0
KOPOJI
05.02.2013, 14:43
  #16

Не по теме:

:D ..в панике бегать и кричать "А-а-а!!! Пол-лун-дра!!!:scare:"

1
32 / 32 / 5
Регистрация: 15.11.2010
Сообщений: 166
05.02.2013, 17:56  [ТС] 17
При таком варианте: (без "?")
PHP
1
RewriteRule ^page\.php$ /page/%1 [R=301,NC,L]
выходит:
http://www.wellsait.ru/page/html?url=html
после добавления "?"
PHP
1
RewriteRule ^page\.php$ /page/%1? [R=301,NC,L]
выходит:
http://www.wellsait.ru/page/html

"&" - предотвращает зацикливание редиректа
вот окончательный код файла .htaccess

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.wellsait.ru$
RewriteRule (.*) http://www.wellsait.ru/$1 [R=301,L]
 
#Редирект
RewriteCond %{QUERY_STRING} ^url=([_a-z]*)$
RewriteRule ^page\.php$ /page/%1? [R=301,NC,L]
RewriteCond %{QUERY_STRING} ^page=([_a-z]*)$
RewriteRule ^katalog\.php$ /katalog/%1? [R=301,NC,L]
 
#ЧПУ
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /
RewriteRule ^page/([^/]+)/?$ page.php?url=$1& [L,QSA]
RewriteRule ^katalog/([^/]+)/?$ katalog.php?page=$1& [L,QSA]
? и & - это что-то вроде хаков

Добавлено через 8 минут
Цитата Сообщение от Илья Федин Посмотреть сообщение
А если нету GET-параметров?
header("Location: index.php")
1
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 18:18 18
Цитата Сообщение от Evgeniy71rus Посмотреть сообщение
header("Location: index.php")
А если это HTML-файл?
0
32 / 32 / 5
Регистрация: 15.11.2010
Сообщений: 166
05.02.2013, 18:29  [ТС] 19
Цитата Сообщение от Илья Федин Посмотреть сообщение
А если это HTML-файл?
А какая разница? У меня PHP во всех работает
0
887 / 353 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
05.02.2013, 18:31 20
Evgeniy71rus, Именно! У вас PHP, а у меня HTML!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2013, 18:31

Настройка двух провайдеров для двух офисов Mikrotik RB2011UiAS-2HnD-IN
С микротиком особо не дружен, а времени на достаточно глубокое изучение и понимание как подключать...

Настройка загрузки для двух ХРюш на двух разных жестких на одном компьютере
ЗДравствуте. Суть проблемы: стояла на одном жестком диске операционная система виндоус хп, поставил...

Настройка ЧПУ
В общем, господа, помогите настроить ЧПУ. У меня кое-что получилось. Например, заменить ссылки...

Настройка ЧПУ
Здравствуйте. Есть сайт на html. Помогите настроить .htaccess для него. Нужно чтобы ссылки по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru