2016-02-09 2 views
2

Я надеюсь, что кто-то поможет мне, потому что я застрял с этим:Htaccess снова - специальный URL Rewrite для вложенной

домен

имя - test.site.com корень документа ==/WWW/тест все содержание (CMS), расположенный в/www/test/web Мне нужно, когда я набираю адресную строку: 1) test.site.com/* - сайт открывается с/www/test/web, а адресная панель хранит URL-адрес "test.site.com/*»

2) тип test.site.com/web/* - такое же поведение - сайт открывается из Интернета и URL изменен на "test.site.com/*"

3) исключение - тип test.site.com/folder1 - открывает страницу с/WWW/тест/folder1

можно перенаправить в "полотно" вложенная Таким образом:

.htacesss в/WWW/тест:

RewriteCond %{HTTP_HOST} ^test.site.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.test.site.com$ 
RewriteCond %{REQUEST_URI} !web/ 
RewriteRule (.*) /web/$1 [L] 

но он работает только для 1) требований. 2) и 3) не работает. и как для 3) Я вижу, что каждый запрос будет перенаправлен в подпапку «web».

ответ

0

Для вашего второго требования вам необходимо дополнительное правило для перенаправления/web в/root.

Что-то вроде этого:

RewriteCond %{THE_REQUEST} /web/([^\s]*) [NC] 
RewriteRule^/%1 [NC,L,R] 

Правила выше будет соответствовать любому запросу, начиная с/вебом/обув и перенаправить запрос/Foo.

И для 3-го вам нужна RewriteCond, чтобы исключить/folder1 из RewriteRule.

RewriteCond %{REQUEST_URI} !^/folder1 

REWRITE

RewriteCond %{THE_REQUEST} /web/([^\s]*) [NC] 
RewriteRule^/%1 [NC,L,R] 
RewriteCond %{HTTP_HOST} ^(www\.)?test.site.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/folder1  RewriteRule ((?!web).*) /web/$1 [NC,L]