ezpublish.ru / Форумы / Для экспертов / RewriteRule для eZP




RewriteRule для eZP

Для доступа к форумам необходимо авторизоваться. Это можно сделать здесь

Автор Сообщение

Андрей Астахов

Ср, 24 января 2007 9:52:47

Нужно каким-то образом сделать так, чтобы урлы типа:
http://<site_url>/print/<url_alias>
восприниммались системой как
http://<site_url>/layout/set/print/<url_alias>

Попробовал в "URL переводчике" добавить "Наcтроенные преобразования адресов URL":
print/* -> layout/set/print/{1}

это просто не работает, система не обращает внимание на преобразование и я получаю "Модуль print не найден".

Другой вариант: в .htaccess перед
RewriteRule .* index.php [L]

добавил

RewriteRule ^print/(.*)$ index.php/layout/set/print/$1 [L]

в итоге при вызове print/<url_alias> снова получаю ошибку "Модуль print не найден"


Где я делаю ошибку? Или может быть кто-то решал этот вопрос по-другому?

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Денис Зацаринный

Ср, 24 января 2007 11:35:36

Я думаю - правильнее будет

...
RewriteRule ^print/(.*)$ layout/set/print/$1 [L]
...

RewriteRule .* index.php [L]


===-----
Не разрешимых заздач нет - есть малый гонорар
---=====

Андрей Астахов

Ср, 24 января 2007 11:50:13

Пробовал и так. Локально работает, на хостинге - нет, не знаю в чем и дело. При включении RewriteLog на хостинге получаю 500 Internal Server Error.

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Денис Зацаринный

Ср, 24 января 2007 12:08:04

Понял где грабли

включаем в settings/override/site.ini.append.php

[SiteAccessSettings]
ForceVirtualHost=true

если не помогает - бъем морду хостерам - пусть настраивают apache по людски


===-----
Не разрешимых заздач нет - есть малый гонорар
---=====

Андрей Астахов

Ср, 24 января 2007 12:24:47

кстати, мирохост и правда хорош? или только в том пакете, что у вас?

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Андрей Астахов

Ср, 24 января 2007 14:12:14

ForceVirtualHost=true так и стоит с самого начала. Бить морду хостерам и хотелось бы, но пока непонятно за что. RewriteUrls на других проектах работают безглючно, локально указанные правила работают, а вот на хостинге нет. Кеш на всякий случай почистил, хотя насколько я понимаю он в этой ситуации не задействован. Что в настройке апача может быть неправильного?

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Денис Зацаринный

Чт, 25 января 2007 9:30:52

500 - ошибка - это внутренняя ошибка сервера и надо смотреть мастер лог апача
Но скорее всего там будет писаться про превышение максимального количества рекурсий (mod_rewrite использует рекуррентные вызовы)


===-----
Не разрешимых заздач нет - есть малый гонорар
---=====

Андрей Астахов

Чт, 25 января 2007 11:38:15

500-я появляется только при попытке включить RewriteLog - хотел посмотреть как вообще идет порядок преобразований. Dообще mod_rewrite работает загадочно на хостинге.
Правило RewriteRule .* index.php [L] срабатывает даже если есть другие, более подходящие выше по коду.

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Денис Зацаринный

Чт, 25 января 2007 11:48:00

Правильно все правила просматриваются до конца


===-----
Не разрешимых заздач нет - есть малый гонорар
---=====

Андрей Астахов

Чт, 25 января 2007 12:26:41

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

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Денис Зацаринный

Чт, 25 января 2007 12:49:23

Думаю здесь достаточно информации

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html


===-----
Не разрешимых заздач нет - есть малый гонорар
---=====

Андрей Астахов

Вс, 28 января 2007 10:13:19

спасибо за RTFM ))

проверил свой набор правил не только локально, но и на другом сервере - работает, стало быть дело в конкеретных настройках сервера. Однако проблему решил так:

RewriteRule ^print/(.*) http://<site_url>/layout/set/print/$1 [P]

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Глеб Альшанский

Пт, 9 марта 2007 8:31:05

RewriteBase можно попробовать задать было перед списком правил.

http://www.sigmakom.ru

Андрей Астахов

Пт, 9 марта 2007 11:18:01

Я считал, что RewriteBase относится ко всем преобразованиям в файле .htaccess и его нельзя применить к группе преобразований (как RewriteCond относится к RewriteRule). Поправьте меня, если я не прав - можно ли в одном .htaccess использовать несколько директив RewriteBase:

RewriteBase /
RewriteRule ...
RewriteRule ...

RewriteBase /print
RewriteRule ...
RewriteRule ...

???

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/