Помогите разобраться с .htaccess и адресами страни
41 сообщение
#15 лет назад
На сайте есть каталог продукции и несколько информационных страниц. Разделы каталога имеют адрес, например, domain.ru/catalog/category1/..., а инфо. страницы domain.ru/razdel1/... Нужно сделать следующее: если в адресе есть слово "catalog/", то запрос передаётся файлу catalog.php, иначе запрос передаётся файлу contant.php. Вот содержание файла .htaccess.
RewriteEngine On
RewriteBase /
RewriteRule ^catalog\/(.*)$ catalog.php?var=$1
RewriteRule ^(.*)$ content.php?var=$1
Если убрать 2-ое правило, то каталог работает правильно. Но в таком виде все запросы уходят к content.php, а в var получается "content.php". Подскажите что нужно исправить?
1599 сообщений
#15 лет назад
Вот такое будет работать. Дело в том, что у вас к htaccess апач обращается два раза - первый раз к первому правилу, преобразует URL, а так как появилось новое URL, то опять идет по кругу - но уже ко второму правилу обращается, с первым совпадения нет. Кароче, надо условием отрубать второй круг 
RewriteRule ^catalog(.*)$ catalog.php?var=$1
RewriteCond %{REQUEST_URI} !catalog.php$
RewriteRule ^(.*)$ content.php?var2=$1
с вас пиво))
1599 сообщений
#15 лет назад
Это не мой способ, это стандартная штука для понимающих, как работает mod_rewrite. Я не знаю, что у вас там на самом деле с путями и т.д., поэтому пробуйте варианты. Распечатайте REQUEST_URI и посмотрите, что в нем (естественно, с закоментированным вторым правилом). Может быть это не catalog.php, пишите в rewriteCond то что там. Блин, ну чего я объясняю, сами должны понимать что такое rewriteCond ) а способ 100% верный.
41 сообщение
#15 лет назад
В тех. поддержке хостинга подсказали такое решение:
RewriteEngine On
RewriteBase /
RewriteRule ^catalog\/(.*)$ catalog.php?var=$1
RewriteRule ^(+)$ content.php?var=$1
Наверное у них Апач как-то хитро настроен, но вот так всё заработало...
1599 сообщений
#15 лет назад
Ну да, тоже способ, но если только вы уверены, что в URL будут только эти символы. Слушайте, как вы сайты делаете, если ничего не понимаете? Этот способ сработал, потому что в списке символов нет точки, знака вопроса и равно, а после первого обращения апача к первому правилу URL становится catalog.php?var - т.е. с точкой и вопросиком) поэтому второе правило не подходит при второй заходе)
41 сообщение
#15 лет назад
Цитата:Ну да, тоже способ, но если только вы уверены, что в URL будут только эти символы.
Уверен.
Цитата ("Paralysed"):
Слушайте, как вы сайты делаете, если ничего не понимаете?
На своих сайта я такие проблемы обхожу заранее, а сейчас приходится исправлять косяки другого программиста.