Как использовать .htaccess для псевдонима / перенаправления субдомена в другую подпапку домена - PullRequest
0 голосов
/ 11 января 2019

Я бы хотел, чтобы мои пользователи переходили на

red.example.com

и что они на самом деле видят, так это страницу, обслуживаемую с

blue.example.com/red

Возможно ли это с помощью .htaccess? По сути, это перенаправление, но я не хочу, чтобы изменение URL-адреса в адресной строке.

Редактировать

Добавление информации о виртуальном хосте.

RewriteEngine On
RewriteRule /<none> / [L,R]

<IfDefine USE_PHP_FPM>
    <Proxy "unix:/opt/bitnami/php/var/run/wordpress.sock|fcgi://wordpress-fpm" timeout=300>
    </Proxy>
</IfDefine>

<Directory "/opt/bitnami/apps/wordpress/htdocs">
    AuthType Basic
    AuthName Coincurve
    AuthUserFile "/opt/bitnami/apache2/wordpress_users"
    Require valid-user

    Options +MultiViews +FollowSymLinks
    AllowOverride None
    <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        # Require all granted
    </IfVersion>

    <IfDefine USE_PHP_FPM>
       <FilesMatch \.php$>
         SetHandler "proxy:fcgi://wordpress-fpm"
       </FilesMatch>
    </IfDefine>

    RewriteEngine On
    #RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [S=1]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]

    Include "/opt/bitnami/apps/wordpress/conf/banner.conf"
</Directory>

Include "/opt/bitnami/apps/wordpress/conf/htaccess.conf"

1 Ответ

0 голосов
/ 11 января 2019

У меня есть только один настоящий сервер на mydomain.com. красный и синий поддомен только указывают на IP-адрес этого mydomain.com.

Если субдомены все указывают на одно и то же место (корень основного домена), то вам, вероятно, не нужно «перенаправлять» на другое имя хоста (это может включать использование mod_proxy и настройку обратный прокси ). Другими словами blue.example.com/red указывает на то же самое, что и red.example.com/red - так что это становится относительно простым внутренним переписыванием .

(Хотя ваша конфигурация vhost не завершена, я предполагаю, что у вас есть где-нибудь директивы ServerAlias?)

Например:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^red\.example\.com [NC]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^ /red%{REQUEST_URI} [L]

Проверка по переменной среды REDIRECT_STATUS заключается в том, чтобы убедиться, что мы переписываем только первоначальный запрос от клиента, т.е. не переписанные запросы, что позволяет избежать цикла перезаписи. REDIRECT_STATUS изначально пусто и установлено на «200» после первого успешного перезаписи. В противном случае это безоговорочно переписывает все, поэтому можно иметь подкаталог /red внутри корневого каталога /red, если хотите.

...