RewriteRule и веб-сервис

1. DWZ2 03.10.18 12:27 Сейчас в теме
Имеется машина под Win 7 SP1 64 bit Rus, 1С 8.3
На 80 порту стоит Apache 2.4.

Для обхода чужого кривого NLB (с 1С не связано) в httpd.conf были добавлены следующие строки:

<IfModule rewrite_module>

RewriteEngine On

# исключения для localhost
RewriteCond %{HTTP_HOST} 127\.0\.0\.1
RewriteRule (.*) %{REQUEST_URI} [QSA,L]

RewriteCond %{HTTP_HOST} localhost [NC]
RewriteRule (.*) %{REQUEST_URI} [QSA,L]

# меняем IP x.x.x.x на y.y.y.y
RewriteCond %{HTTP_HOST} x\.x\.x\.x
RewriteRule (.*) http://y.y.y.y%{REQUEST_URI} [QSA,END,P]

# тут похожая куча заменяемых IP-адресов и подсетей
# ...

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [QSA,END,P]

</IfModule>
Показать


в браузере FireFox Quantum в качестве прокси прописано 127.0.0.1:80, 127.0.0.1 и localhost в исключениях, по 127.0.0.1 главная страница Апача показывается, перенаправление работает, URLы, где не надо заменять IP тоже работают правильно, НО!!!

перестали работать 1Совские HTTP-сервисы, т.е. запросы вида


выдают 404 Not found. Если выключить перенаправление, то есть поставить
RewriteEngine Off
и перезапустить Апач, то 1Совские HTTP-сервисы начинают работать, но зато, ясное дело, не работает замена IP-адресов. В результате работаем, как светофор.

Нельзя ли как-то сделать так, чтобы работали и 1Совские HTTP-сервисы и замена IP-адресов сразу?

Видимо, надо прописать какие-то добавочные правила RewriteCond/RewriteRule

Вопрос Чернышеского: "Что делать???" Помогите, пожалуйста.
Вознаграждение за ответ
Показать полностью
Найденные решения
3. DWZ2 03.10.18 13:57 Сейчас в теме
Нашёл обходной путь - смешно звучит, но опубликовать в каталог DocumentRoot

Раньше публиковали в какой попало каталог - и всё работало. А RewriteEngine только от DocumentRoot пути строит.

Или правильно было делать как-то по-другому?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. as 03.10.18 17:59 Сейчас в теме
(1)
RewriteEngine

Если я правильно понял, вам не нужно замену делать для сервисов 1с.
Я бы описал отдельными роутами, как в доке:
DocumentRoot "/var/www/example.com"
AliasMatch "^/myapp" "/opt/myapp-1.2.3"
<Directory "/opt/myapp-1.2.3">
    RewriteEngine On
    RewriteBase "/myapp/"
    RewriteRule "^index\.html$"  "welcome.html"
</Directory>

https://httpd.apache.org/docs/current/mod/mod_rewrite.html
В этом случае можно по разному прописать.
2. Timur.V 82 03.10.18 12:56 Сейчас в теме
Если при перенаправлении рубятся 1с- сервисы, значит они попадают под правила.
Можно исключить их из правил, добавив в каждое ваше правило дополнительно RewriteCond который исключает 1с-сервисы.
т.е. если в правиле написано RewriteCond, вы добавляете ещё один RewriteCond для 1с. ссылка

Другой путь,
закомментировать ваши правила и раскомментировать их по одному, и проверять работает 1с или нет. Найти правило, которое мешает работе 1с.
4. DWZ2 03.10.18 14:01 Сейчас в теме
(2) Проблема не в том, что какое-то правило лишнее, а в том, что чего-то не хватает. Я и правила для localhost добавил, чтобы при обращении к нему незацикливалось, а так он мне и не нужен был, а без него всё работало. Но вот появилась задача поднять на этой машине 1С-ное HTTP - и понеслась.
3. DWZ2 03.10.18 13:57 Сейчас в теме
Нашёл обходной путь - смешно звучит, но опубликовать в каталог DocumentRoot

Раньше публиковали в какой попало каталог - и всё работало. А RewriteEngine только от DocumentRoot пути строит.

Или правильно было делать как-то по-другому?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот