Настройка .htaccess для основного домена и поддоменов с использованием только .htaccess - PullRequest
0 голосов
/ 12 марта 2019

У меня есть хостинг с www.main.com на основе Apache 2.4 и нескольких поддоменов, таких как

www.sub1.main.com, www.sub2.main.com, ....

структура папок

/home/main/.htaccess + project files and subdomain folders like:
/home/public-html/main/sub1.main.com/.htaccess
/home/public-html/main/sub1/.htaccess + project1 files
/home/public-html/main/sub2/.htaccess + project2 files

и т.д.

субдомены - это отдельные проекты, основанные на разных технологиях

Сайт / home / main / основан на AngularJS и имеет стандартный угловой Конфигурация .httaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]

Я хочу иметь другую конфигурацию .htaccsess на sub.main.com, например:

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api$ http://127.0.0.1:3000/$1 [P,L]

Какой прокси должен перенаправлять мой трафик Apache на мой сервер nodejs.

В какой-то момент перенаправление моего субдомена не работает. Это работает только из основной папки.

Итак, у меня есть 3 вопроса:

  1. Должен ли я настроить все правила для всех доменов в основном .httaccess? (что не очень хорошо из-за потенциального столкновения URL)

  2. Можно ли настроить основной .htaccess только для того, чтобы другие дочерние домены могли использовать свои собственные .httaccess

  3. где находится правильное расположение поддоменов .httaccess?

здесь - /home/public-html/main/sub1.main.com/.htaccess или здесь - /home/public-html/main/sub1/.htaccess + файлы проекта1

Это виртуальный хостинг с ограниченным доступом к конфигурации apache. Я могу использовать только способ .httaccess, у меня нет прав на изменение виртуальных хостов, поэтому, пожалуйста, предоставляйте только решения .httaccess.

Оба приведенных выше фрагмента кода работают и не перенаправляют ни один узел, а только из домашней / основной папки, а не из поддоменов.

Мне нужен специальный .htaccess для каждого субдомена для размещения нескольких проектов

1 Ответ

0 голосов
/ 12 марта 2019

Я нашел решение для тех, кто захочет использовать nodeJS на виртуальном хостинге:

, помещенный в / home / main / www / .htaccess ниже:

RewriteEngine on

RewriteOptions inherit
RewriteCond %{HTTP_HOST} ^main\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.main\.org$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/.+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "http\:\/\/angular\.main\.org\/" [R=301,L]

RewriteBase /
RewriteCond %{REQUEST_URI} !^/node/
# Rewrites all URLS node.main to node server
RewriteCond %{HTTP_HOST} ^(www\.)?node.main\.
# Redirect to node server
RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P, L]

Внутри / home / main / www / angular put .htaccess вроде:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]

и нам не нужен .htaccess в папке узла. Надеюсь, это поможет кому-то, у кого возникла такая же проблема.

...