Я использую mod_rewrite в файле настроек ManagedFusion (аналогично .htaccess) и хочу пересылать все входящие запросы на другой порт на сервере, за исключением нескольких папок.
Пока у меня есть это (с игнорируемым пользовательским интерфейсом папки, формами, клиентской системой и виджетами)
RewriteEngine On
RewriteCond %{REQUEST_URI} !ui$
RewriteCond %{REQUEST_URI} !forms$
RewriteCond %{REQUEST_URI} !clientsystem$
RewriteCond %{REQUEST_URI} !widgets$
RewriteRule ^/(.*) http://localhost:8050/$1 [P,L]
Это прекрасно работает, пока эти каталоги исключений не существуют, однако, когда они создаются, перезаписывающий механизм просто сработает снова, и в этом случае он будет соответствовать правилу, тем самым перенаправив меня на другой порт.
Как я мог решить это?
Еще один вопрос, если я хочу, чтобы запросы вроде '? File = bla' также переадресовывались, будет ли это просто работать так?
Редактировать: вот чем я закончил:
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^ui
RewriteCond $1 !^forms
RewriteCond $1 !^clientsystem
RewriteCond $1 !^widgets
RewriteRule ^/?(.*) http://localhost:8050/$1?%1 [P,L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^ui
RewriteCond $1 !^forms
RewriteCond $1 !^clientsystem
RewriteCond $1 !^widgets
RewriteRule ^/?(.*) http://localhost:8050/$1 [P,R]
Некоторая избыточность, но она работает.