语言子域名的 htaccess 重写

语言子域名的 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.comCNAME onlinux-it.setupdns.net
,而 www.domain.comCNAMEdomain.com

我也尝试分配
es.domain.comCNAMEdomain.com
但没有任何改变。

答案1

最好的方法是更改DocumentRoot​​ Apache 配置文件中那些 sobdomains 的指令,以便它们全部指向,/public/www/但我想你不能这样做。

我认为没有任何方法可以用文件来完成你所要求的操作.htaccess

您可以创建符号链接而不是文件夹,以便:

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

你能做到吗?

答案2

你写了:

在我的 DNS 列表中,我看到es.domain.comCNAME onlinux-it.setupdns.net,而www.domain.comCNAMEdomain.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在 ie 后面输入 或 任何内容,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 配置。

相关内容