2013-09-05 2 views
0

Я не так хорошо разбираюсь в proxypass (reverse). Поэтому любая помощь была бы замечательной.Proxypass из любой подпапки

Вот что я пытаюсь сделать:

Я хочу передать любой подкаталог в корневой URL.

Так удара mydomain.com/xxxx получить прошло бы mydomain.com/

Что бы быть лучшим способом для достижения этой цели.

В настоящее время у нас есть 55 различных вариантов. И мне не хотелось бы создавать линию ProxyPass (Reverse) для каждого.

ответ

1

Я не уверен, почему вы хотите отменить прокси-сервер всего этого, так как домен никогда не изменяется. Но если по какой-либо причине у вас есть, вы должны обратный прокси-сервер, вы можете использовать ProxyPassMatch, который работает аналогично с ProxyPass за исключением вы можете дать ему шаблон регулярного выражения:

ProxyPassMatch ^/(.+)$ http://mydomain.com/ 

Тем не менее, мне кажется, что вы на самом деле просто хотят является внутренне переписать вместо отправки совершенно новый запрос от имени одного запроса:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/index\.(php|html?) 
RewriteRule ^(.+)$/[L] 

каждой «подпапка» по переменному обычно используется для отслеживания того, где пользователь получил URL (думаю, телевизор, радио и т. д.), но мы не хотим управлять более 50 версиями страницы. Поэтому идея заключалась в том, чтобы перенаправить его на ту же страницу, захватить значение подкаталога и использовать эту информацию. В идеале строка запроса была бы неплохой, но нам сказали не использовать их (читаемость, которую я предполагаю)

Если вы используете обратный прокси-сервер, вы теряете информацию с целевой страницы. Это означает, что если я перейду к, http://foo.com/bar1, и он будет обращен проксими к http://foo.com/index.php, сценарий index.php не будет знать, что он был проксирован от /bar1 (хотя я думаю, что вы можете передать это как проксированные заголовки). Так что это побеждает цель. Если вы внутренне переписываете, как и выше, браузер скрыт от всего этого и не будет знать, что произошла какая-либо внутренняя маршрутизация. Вы также можете передать строку запроса, если вам нравится, так как все полностью скрыта от браузера:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ /index.php?subdir=$1 [L] 

Так что с этими правилами, если кто-то идет http://foo.com/tv и /tv не папка или файл, он получает внутренне перенаправляется на /index.php, а «tv» передается скрипту в качестве параметра GET «subdir».

+0

Хороший вопрос, и, может быть, я не уверен, что мне делать ... proxypass казался правильным. Каждая «подпапка» фактически используется для отслеживания того, где пользователь получил URL (думаю, телевизор, радио и т. Д.), Но мы не хотим управлять более 50 версиями страницы. Поэтому идея заключалась в том, чтобы перенаправить его на ту же страницу, захватить значение подкаталога и использовать эту информацию. В идеале строка запроса была бы приятной, но нам сказали не использовать их (читаемость, которую я угадываю). Если у вас есть лучшая идея - я открыт :) – gin93r

+0

@Veo конечно, см. Редактирование выше –

+0

Я, кажется, получаю сообщение «он работает», когда я просматриваю domain.com/index.html/1 Теперь я делаю это с помощью xampp, и я помещаю его в файл .htaccess на уровне root. ' RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule ^ (. +) $ /index.html?subdir=$1 [L] ' – gin93r

Смежные вопросы