mod_rewrite вопрос - PullRequest
       21

mod_rewrite вопрос

1 голос
/ 14 февраля 2009

Я хотел бы обслуживать / foo и / foo / локально, но прокси запрашивает / foo / * к удаленному серверу. Однако следующее правило соответствует всем вышеперечисленным. Что я делаю не так?

RewriteRule ^/foo/(.+)$ http://remote.host/$1 [P,L]

Ответы [ 3 ]

1 голос
/ 16 февраля 2009

Вам нужно будет выйти из первой пары условий, чтобы они не отправили их на удаленный хост. Попробуйте это:

RewriteEngine On
RewriteRule ^foo$ /$1 [L]
RewriteRule ^foo/$ /$1 [L]
RewriteRule ^foo/([a-zA-Z0-9].*)$ http://example.com/$1 [L]

Первое правило проверяет, чтобы первое условие было просто /foo. Если так, оставайся дома.

Следующий тест проверяет, не является ли это /foo/. Если это так, снова оставайтесь на месте.

Последний тест проверяет, есть ли у вас что-нибудь, стоящее за косой чертой, если да, то вам, вероятно, нужен удаленный хост и отправляет его туда.

0 голосов
/ 14 февраля 2009

Я думаю, что понял - где-то по умолчанию задано имя документа index.php, которое незаметно добавляется к моему перезаписи.

Выход RewriteLog:

(2) init rewrite engine with requested uri /foo
(3) applying pattern '^/foo(/.+)+$' to uri '/foo'
(1) pass through /foo
(2) init rewrite engine with requested uri /foo/
(3) applying pattern '^/foo(/.+)+$' to uri '/foo/'
(1) pass through /foo/
(2) init rewrite engine with requested uri /foo/index.php
(3) applying pattern '^/foo(/.+)+$' to uri '/foo/index.php'
(2) rewrite '/foo/index.php' -> 'http://remote.host//index.php'
(2) forcing proxy-throughput with http://remote.host//index.php
(1) go-ahead with proxy request proxy:http://remote.host//index.php [OK]
0 голосов
/ 14 февраля 2009

Что ж, поскольку mod_rewrite обычно удаляет начальные косые черты из сопоставленного текста, я подозреваю, что вы либо неправильно транскрибируете / анонимизируете, либо в вашей конфигурации перезаписи происходит что-то еще. Это, как представляется, подтверждается невозможностью сопоставления шаблона /foo/.+ /foo.

.

Можете ли вы развернуть и перепроверить, что вы публикуете, из конфигурации перезаписи, чтобы мы могли увидеть, что еще может происходить?

...