У меня есть сервер, несколько доменов и две веб-страницы. Не могу понять, как сделать следующее:
A.com -> root\
www.A.com -> root\
B.com -> root\
www.B.com -> root\
C.com -> root\folder1\
www.C.com -> root\folder1\
Кстати. Какой логический оператор 'and' используется в htaccess? Я обнаружил, что «или» - это [ИЛИ], но [И], похоже, не работает. А на каком языке написан htaccess :)?
ОБНОВИТЬ
Но я ошибся в вопросе. Вот что я действительно хочу сделать. DNS настроен для домена A.com так, чтобы он указывал на корневую папку сервера. Теперь я хотел бы установить следующие перенаправления:
Любой домен кроме C.com и кроме D.com перенаправляет (301) на www.A.com. A.com в любом случае указывает на корневую папку сервера, которая задана в DNS.
Домен www.C.com указывает на папку «folder1» на сервере. Можно ли в htaccess установить?
Теперь домены C.com, www.D.com и D.com перенаправляются на www.C.com.
Для ваших доменов A и B используйте:
RewriteCond %{HTTP_HOST} ^(www\.)?(a|b).com$ [NC]
RewriteRule ^(.*)$ /root/ [L]
В (www\.)?
позволяет использовать как с www, так и без него (? означает «предыдущий блок ноль или один раз»).
(a|b)
означает «а или б». Вы можете добавить туда больше доменов, используя больше каналов (a | b | d | e)
Для другого:
RewriteCond %{HTTP_HOST} ^(www\.)?c.com$ [NC]
RewriteRule ^(.*)$ /root/folder1/ [L]
Если вы хотите, чтобы www.A.com/hello.php перенаправлял на /root/hello.php, добавьте $1
после / root / в RewriteRule (подходит для обоих правил)
[И] не существует, потому что это неявно при использовании нескольких RewriteConds. Что-то вроде этого:
RewriteCond% {HTTP_HOST} ^ www.a.com $ RewriteCond% {HTTP_HOST} ^ www.b.com $
Уже означает, что подразумевается [И], и поэтому никогда не будет работать (потому что домен никогда не может быть a.com и b.com одновременно).
Обновить Ответьте на ваш новый вопрос:
«Любой домен кроме C.com и кроме D.com перенаправляет (301) на www.A.com. A.com в любом случае указывает на корневую папку сервера, и это задано в DNS».
RewriteCond %{HTTP_HOST} !^(www\.)?(c|d).com$ [NC]
RewriteRule ^(.*)$ http://www.a.com/$1 [L,R=301]
«Домен www.C.com указывает на папку 'folder1' на сервере. Можно ли это установить в htaccess?»
RewriteCond %{HTTP_HOST} ^www.c.com$ [NC]
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteRule ^(.*)$ /folder1/$1 [L,R]
«Теперь домены C.com, www.D.com и D.com перенаправляются на www.C.com».
RewriteCond %{HTTP_HOST} ^c.com$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?d.com$ [NC]
RewriteRule ^(.*)$ http://www.c.com/$1 [L,R=301]