Назад | Перейти на главную страницу

Перезапись htaccess для языковых поддоменов

Мне нужно указать субдомены, например es.domain.com к /public/www/index.php
Проблема в том, что мой хост НЕ предоставляет мне возможность установить путь, я могу только настроить поддомены для «локального использования», что создает папки в public каталог

Моя структура

/public/
/public/de/
/public/es/
/public/it/
/public/www/index.php

Мой хост сказал мне использовать файлы .htaccess внутри папок поддомена.

Я пробовал например в /public/es/ что-то вроде

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^(de|es|it)\.mydomain\.com$
        # Create an environment variable to remember the language:
    RewriteRule (.*) - [QSA,E=LANGUAGE:%1]
        # Now check if the LANGUAGE is empty (= doesn't exist)
    RewriteCond %{ENV:LANGUAGE} !^$
        # If so, create the default language (=es):
    RewriteRule (.*) - [QSA,E=LANGUAGE:es]
        # Change the root folder of the spanish language:
    RewriteCond %{ENV:LANGUAGE} ^es$
        # Change the root folder:
    RewriteRule ^/?$ /public/www/index.php
</IfModule>

Но я получаю 404 по этому поводу:
Запрошенный URL /public/www/index.php не найден на этом сервере.

В моем списке DNS я вижу, что
es.domain.com CNAME onlinux-it.setupdns.net
пока www.domain.com CNAME domain.com

Я пробовал также назначить
es.domain.com CNAME в domain.com
но это ничего не изменило.

Вы написали:

В моем списке DNS я вижу, что es.domain.com CNAME onlinux-it.setupdns.net пока www.domain.com CNAME domain.com

Возможно, проблема в вашей конфигурации DNS.

Моя собственная конфигурация DNS выглядит примерно так:

$TTL 86400
@   IN SOA dnsxx.ovh.net. tech.ovh.net. (2011111300 86400 3600 3600000 86400)
            IN  NS     dnsxx.ovh.net. 
            IN  NS     nsxx.ovh.net. 
            IN  A      123.123.123.123 
*           IN  CNAME  papdevis.fr. 

Это означает "если вы напечатаете papdevis.fr или что-то позади www.papdevis.fr или olivier.papdevis.fr зайти на сервер по адресу 123.123.123.123.

Если я изменю адрес 123.123.123.123 к новому например 234.234.234.234, это будет работать, и как только вы наберете papdevis.fr или любой другой материал (как объяснялось ранее), он перейдет в 234.234.234.234. Все будет работать плавно, не трогая ни одной .htaccess файл.

Поэтому попробуйте применить ту же конфигурацию DNS на своем сайте.

Лучшим способом было бы изменить DocumentRoot в ваших файлах конфигурации Apache для этих sobdomains, чтобы все они указывали на /public/www/ но я думаю, ты не можешь этого сделать.

Я не думаю, что есть способ сделать то, о чем вы просите, с помощью .htaccess файл.

Вы можете создать символическую ссылку вместо папки, чтобы:

/public/de/ -> /public/www/

Вы можете это сделать?