Ниже приведена отрывок из моего httpd.conf
. Я хочу поймать все непревзойденные запросы на [2]
и обратный прокси-сервер до http://localhost:8585
. Тем не менее, все ссылки были отправлены http://localhost:8585/var/ww/html/
Apache mod_rewrite catch all (. *) Не работает должным образом
DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride None
RewriteEngine on
RewriteRule testing/(.*) http://localhost:8585/mytesting/$1 [P,L] # [1]
RewriteRule (.*) http://localhost:8585/$1 [P,L] # [2] Catch all Rule
</Directory>
Вот некоторые испытания я попробовал и результат после переписывания
хорошего результата
http://localhost/testing/
=>http://localhost:8585/mytesting/
[3] http://localhost/testing/goodOne
=>http://localhost:8585/mytesting/goodOne
[4 ]
Bad Result
http://localhost:8080/testing
=>http://localhost:8585/var/www/html/testing
[5] Я ожидаю http://localhost:8585/testing
http://localhost:8080/
=>http://localhost:8585/var/www/html/
[6] Я ожидаю http://localhost:8585/
Проблема очевидна, что последний RewriteRule
предваряется DocumentRoot
(/ вар/WWW/HTML /) после того, как переписать. Я сделал что-то не так? Или это намеченное поведение? И как я могу исправить/переделать это, чтобы получить ожидаемый результат?
Выход из RewriteLog
и RewriteLogLevel 2
[3]
::1 - - [{date}] [xxx][yyy] (2) [perdir /] rewrite 'var/www/html/testing/' -> 'http://localhost:8585/mytesting/'
::1 - - [{date}] [xxx][yyy] (2) [perdir /] escaped URI in per-dir context for proxy, http://localhost:8585/mytesting/ -> http://localhost:8585/mytesting/
::1 - - [{date}] [xxx][yyy] (2) [perdir /] forcing proxy-throughput with http://localhost:8585/mytesting/
::1 - - [{date}] [xxx][yyy] (1) [perdir /] go-ahead with proxy request proxy:http://localhost:8585/mytesting/ [OK]
[4]
::1 - - [{date}] [xxx][yyy] (2) [perdir /] rewrite 'var/www/html/testing/goodOne' -> 'http://localhost:8585/mytesting/goodOne'
::1 - - [{date}] [xxx][yyy] (2) [perdir /] escaped URI in per-dir context for proxy, http://localhost:8585/mytesting/goodOne -> http://localhost:8585/mytesting/goodOne
::1 - - [{date}] [xxx][yyy] (2) [perdir /] forcing proxy-throughput with http://localhost:8585/mytesting/goodOne
::1 - - [{date}] [xxx][yyy] (1) [perdir /] go-ahead with proxy request proxy:http://localhost:8585/mytesting/goodOne [OK]
[5]
::1 - - [{date}] [xxx][yyy] (2) [perdir /] rewrite 'var/www/html/testing' -> 'http://localhost:8585/var/www/html/testing'
::1 - - [{date}] [xxx][yyy] (2) [perdir /] escaped URI in per-dir context for proxy, http://localhost:8585/var/www/html/testing -> http://localhost:8585/var/www/html/testing
::1 - - [{date}] [xxx][yyy] (2) [perdir /] forcing proxy-throughput with http://localhost:8585/var/www/html/testing
::1 - - [{date}] [xxx][yyy] (1) [perdir /] go-ahead with proxy request proxy:http://localhost:8585/var/www/html/testing [OK]
[6]
::1 - - [{date}] [xxx][yyy] (2) [perdir /] rewrite 'var/www/html/' -> 'http://localhost:8585/var/www/html/'
::1 - - [{date}] [xxx][yyy] (2) [perdir /] escaped URI in per-dir context for proxy, http://localhost:8585/var/www/html/ -> http://localhost:8585/var/www/html/
::1 - - [{date}] [xxx][yyy] (2) [perdir /] forcing proxy-throughput with http://localhost:8585/var/www/html/
::1 - - [{date}] [xxx][yyy] (1) [perdir /] go-ahead with proxy request proxy:http://localhost:8585/var/www/html/ [OK]
Что произойдет, если вы примете правила из директивы ''? Я не понимаю, почему они должны быть там. –
arco444
@ arco444, вы имеете в виду перемещение '[2]' после директивы '', как показано ниже? Я новичок в Apache, что я сделал, возможно, не имеет смысла. DocumentRoot "/ Var/WWW/HTML" Опции FollowSymlinks AllowOverride None RewriteEngine на RewriteRule тестирование /(.*) HTTP: // локальный: 8585/mytesting/$ 1 [P, L] # [1 ] RewriteRule (. *) Http: // localhost: 8585/$ 1 [P, L] # [2] Поймать все правило –
Sungam