2013-11-10 3 views
1

У меня есть эта установка:Как я могу сделать это .htaccess redirect исключать главную страницу?

http://example.com 
http://www.example.com 

и

http://www2.example.com 

Я хотел бы перенаправить все страницы из первого набора, кроме домашней страницы, на более новый (WWW2) домен.

Вот что у меня в .htaccess Сейчас:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{HTTP_HOST} !www2.example.com$ [NC] 
    RewriteRule ^(.*)$ http://www2.example.com/$1 [L,R=301] 
</IfModule> 

Это работает, но я хочу, чтобы исключить домашнюю страницу. Как добавить дополнительное условие для этого?

Редактировать: Кроме того, я хотел бы исключить папку под названием «активы» и все ее содержимое.

ответ

1

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

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{HTTP_HOST} !www2.example.com$ [NC] 
    RewriteRule ^(.+)$ http://www2.example.com/$1 [L,R=301] 
</IfModule> 

Рассуждение здесь является то, что на главной странице (запрос URI = /) будет иметь косую черту и фактически быть пустой строкой, которая соответствует .*. Но если у вас есть .+, пустая строка (домашняя страница) не будет соответствовать.

Если домашняя страница есть нечто иное, чем просто / (например, /home.html), то вы можете исключить это следующим образом:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_URI} !^/home\.html 
    RewriteCond %{HTTP_HOST} !www2.example.com$ [NC] 
    RewriteRule ^(.*)$ http://www2.example.com/$1 [L,R=301] 
</IfModule> 
+0

Спасибо за помощь. Это работает, но на самом деле перенаправляет мою папку с ресурсами. Прошу прощения, я должен был быть более конкретным. Я также хотел бы исключить папку под названием «активы» и все ее содержимое. Так что перенаправляйте все, но домашняя страница и папка в «/ assets/*» – envysea

+0

@envysea смотрит на второй вариант, тот, у кого есть «RewriteCond% {REQUEST_URI}! ^/Home \ .html'. Если вы хотите, чтобы другие URI были исключены, просто добавьте их больше, заменив 'home \ .html' тем, что вы хотите исключить. –

+0

Эй, Джон, я снова звоню, чтобы узнать, можете ли вы добавить к своему ответу, так как я все еще застрял и хотел бы закрыть это. Все должно перенаправляться, но домашняя страница (/ и index.html), папка и ее содержимое называются активами, а папка и ее содержимое, называемое образами, должны перенаправляться. благодаря – envysea

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