Добавить поддомен в существующий htaccess

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Надо чтобы при открытии поддомена открывалась папка.

Поставил это:
Код:
RewriteCond %{HTTP_HOST} ^p.site.ru$
RewriteCond %{REQUEST_URI} !^/p
RewriteRule ^(.*)$ /p/$1 [L,QSA]

Получил бесконечный редирект
Для просмотра ссылки Войди или Зарегистрируйся [301] -> Для просмотра ссылки Войди или Зарегистрируйся [302 Found] и обратно

Хотя даже папку (/p/) открывать не должно было.

Весь htaccess:
Код:
AddDefaultCharset UTF-8

RewriteEngine On

RewriteBase /

# Добавляет www
RewriteCond %{HTTP_HOST} !^(.+\.)+(.+\.)+.+$
RewriteCond %{HTTP_HOST} ^([^www].[^*].*)$
RewriteRule ^(.*)$ https://www.%1/$1 [L,R=301]

# Редирект на HTTPS
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# Убирает в конце слеш
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

# Все запросы перенаправляет на index.php
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
 
  • Заблокирован
  • #2
Приветствую,

Надо чтобы при открытии поддомена открывалась папка.

Поставил это:
Код:
RewriteCond %{HTTP_HOST} ^p.site.ru$
RewriteCond %{REQUEST_URI} !^/p
RewriteRule ^(.*)$ /p/$1 [L,QSA]

Получил бесконечный редирект
Для просмотра ссылки Войди или Зарегистрируйся [301] -> Для просмотра ссылки Войди или Зарегистрируйся [302 Found] и обратно

Хотя даже папку (/p/) открывать не должно было.

Весь htaccess:
Код:
AddDefaultCharset UTF-8

RewriteEngine On

RewriteBase /

# Добавляет www
RewriteCond %{HTTP_HOST} !^(.+\.)+(.+\.)+.+$
RewriteCond %{HTTP_HOST} ^([^www].[^*].*)$
RewriteRule ^(.*)$ https://www.%1/$1 [L,R=301]

# Редирект на HTTPS
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# Убирает в конце слеш
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

# Все запросы перенаправляет на index.php
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Для поддомена что то такое
RewriteRule ^/(.*) Для просмотра ссылки Войди или Зарегистрируйся
Часть описана тут: Для просмотра ссылки Войди или Зарегистрируйся
и еще вот:
Без настроек Apache и записей в NS не обойтись. Но это делается всего один раз.

<VirtualHost YOUR_IP:80>
DocumentRoot "/home/user/www"
ServerName "test.ru"
ServerAlias "test.ru" "*.test.ru"
ScriptAlias /cgi/ "/home/user/www/cgi/"
ScriptAlias /cgi-bin/ "/home/oser/www/cgi-bin/"
</VirtualHost>
и добавить в NS записях запись типа "А":

* A YOUR_IP
далее в .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([a-zA-Z]+\.)?test\.ru
RewriteRule ^(.*) index.php?name=%1 [L]
С этого момента все запросы типа: petya|vasya|ya|supermod|test|durak.test.ru

Будут приходить скрипту index.php?name=petya|vasya|ya|supermod|test|durak

А там уж сами знаете что с ними делать.
 
Для поддомена что то такое
RewriteRule ^/(.*) Для просмотра ссылки Войди или Зарегистрируйся
Часть описана тут: Для просмотра ссылки Войди или Зарегистрируйся
и еще вот:
Без настроек Apache и записей в NS не обойтись. Но это делается всего один раз.

<VirtualHost YOUR_IP:80>
DocumentRoot "/home/user/www"
ServerName "test.ru"
ServerAlias "test.ru" "*.test.ru"
ScriptAlias /cgi/ "/home/user/www/cgi/"
ScriptAlias /cgi-bin/ "/home/oser/www/cgi-bin/"
</VirtualHost>
и добавить в NS записях запись типа "А":

* A YOUR_IP
далее в .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([a-zA-Z]+\.)?test\.ru
RewriteRule ^(.*) index.php?name=%1 [L]
С этого момента все запросы типа: petya|vasya|ya|supermod|test|durak.test.ru

Будут приходить скрипту index.php?name=petya|vasya|ya|supermod|test|durak

А там уж сами знаете что с ними делать.
Что-то такое уже есть и так как надо не работает.
Нужные поддомены у меня уже направлены на сайт.
В данной Вами теме обсуждается редирект, а мне он не нужен. Мне надо как-раз убрать редирект
 
  • Заблокирован
  • #4
Что-то такое уже есть и так как надо не работает.
Нужные поддомены у меня уже направлены на сайт.
В данной Вами теме обсуждается редирект, а мне он не нужен. Мне надо как-раз убрать редирект
Так если он у вас прописан, как его не будет то? Вы его совсем хотите убрать? Или только перенаправить на нужную папку? Чё то я совсем запутался.
Если просто надо убрать циклический редирект то вот:
Код:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
Последнее редактирование:
Так если он у вас прописан, как его не будет то? Вы его совсем хотите убрать? Или только перенаправить на нужную папку? Чё то я совсем запутался.
Если просто надо убрать циклический редирект то вот:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ Для просмотра ссылки Войди или Зарегистрируйся [L,R=301]
Надо чтобы пользователь открывал p.site.ru, а видел site.ru/p. Без редиректа
А у меня редирект получается
 
  • Заблокирован
  • #6
Надо чтобы пользователь открывал p.site.ru, а видел site.ru/p. Без редиректа
А у меня редирект получается
Для того чтобы открывалось с под домена поддиректория пишется такое правило:
Код:
RewriteCond %{HTTP_HOST} ^(www.)?poddomen\.site\.ru$
RewriteCond %{REQUEST_URI} !/poddomen/
RewriteRule ^(.*)$ /poddomen/$1 [L]
Тут на форуме есть тема, там про под домены как раз: Для просмотра ссылки Войди или Зарегистрируйся
 
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ Для просмотра ссылки Войди или Зарегистрируйся [R,L]
Сайт находится за Cloudflare, так что apache получает запрос всегда по http и если в правиле нет явного указания Для просмотра ссылки Войди или Зарегистрируйся, то редирект будет на http:// вот как в этом правиле RewriteRule ^(.*)(/)$ $1 [L,R=301], которое убирает в конце слеш.
По умолчанию в mod_dir включена опция DirectorySlash, которая наоборот добавляет в конце слеш для существующих каталогов.
Можно поставить DirectorySlash Off или добавить RewriteCond %{REQUEST_FILENAME} !-d для правила, которое убирает в конце слеш.
Код:
AddDefaultCharset UTF-8

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^(?:www\.)?p\.site\.ru$
RewriteRule ^p/ - [L]

RewriteCond %{HTTP_HOST} ^(?:www\.)?p\.site\.ru$
RewriteRule ^(.*)$ /p/$1 [L]

# Добавляет www
RewriteCond %{HTTP_HOST} !^(.+\.)+(.+\.)+.+$
RewriteCond %{HTTP_HOST} ^([^www].[^*].*)$
RewriteRule ^(.*)$ https://www.%1/$1 [L,R=301]

# Редирект на HTTPS
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# Убирает в конце слеш
RewriteRule ^(.*)/$ https://%{HTTP_HOST}/$1 [L,R=301]
DirectorySlash Off

# Все запросы перенаправляет на index.php
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
 
Надо чтобы пользователь открывал p.site.ru, а видел site.ru/p. Без редиректа
А у меня редирект получается
А разве p.site.ru и site.ru не является для апача разными доменами? Если это разные домены - апач всегда будет делать "редирект", что бы там в флагах не было указано...
 
Назад
Сверху