2013-03-27 3 views
0

Мне нужно перенаправить мой домен в подпапку, если подкаталог не указан в запросе URL.Apache перенаправляет домен в папку не указан

Для примера.

a) Если запрос поступает из «domian.com» или «www.domain.com», я хочу перенаправить его на «www.domain.com/page».

b) Однако, если запрос поступает из «domain.com/page2» или «www.domain.com/page2», я не хочу, чтобы запрос перенаправлялся на «www.domain.com/page».

Я пробовал некоторые перестановки в виртуальном хосте, но не повезло. Ниже мой код:

<VirtualHost *:80> 
ServerName domain.com 
ServerAlias www.domain.com 

<Directory /> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
    <IfModule mod_rewrite.c> 
     Options +FollowSymLinks 
     Options +Indexes 
     RewriteEngine On 
     RewriteBase/
     RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ 
     RewriteCond %{REQUEST_URI} !^/$1 
     RewriteRule ^(.*)$ /Page [L] 
    </IfModule> 
</Directory> 

ProxyPreserveHost On 
ProxyPass  /http://www.domain.com:8080/ 
ProxyPassReverse/http://www.domain.com:8080/ 
</VirtualHost> 

Любые указатели были бы полезны.

ответ

1

Вы можете попробовать это вместо:

RewriteEngine On 
    RewriteBase/
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com [NC] 
    RewriteCond %{REQUEST_URI} ^$ [NC] 
    RewriteRule .* /Page [L] 
+0

Это не работает !! –

+0

Почему, используется правило, когда есть URI-путь? –

+0

Что мне нужно, если я попал на домен.com или www.domain.com, его следует перенаправить на сайт www.domain.com/Page, и если я попаду на сайт www.domain.com/Page2, это не должно быть перенаправлены. –

0

The RewriteCond%{REQUEST_URI} !^/$1 исключает каждый запрос, поэтому RewriteRule никогда не используется.

Если вы хотите переписать только корневую директорию, используйте вместо этого regular expression^/$. Вы должны также обернуть правила в соответствующем <Directory>, потому что все заключено относится к каталогу файловой системы, не URL, путь

<Directory /path/to/documentroot> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ 
    RewriteRule ^$ /Page [L] 
</Directory> 
+0

Привет, Олаф, вышеприведенное правило будет перенаправлено на/страницу, независимо от того, предоставлена ​​ли в url папка или нет. Мне нужно избирательное переписывание. Кроме того, я пробовал вышеуказанное правило, оно также не перенаправляется на страницу /. –

+0

@AkhileshAggarwal Он будет переписываться только для корневого каталога. Если вы укажете какой-либо URL-адрес, например. 'www.domain.com/abc', это будет * не * переписать на'/Page', но вместо этого использовать '/ abc'. –

+0

Я протестировал правило, это не перенаправление для корневого каталога :( –

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