Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 不同的域名重定向到不同的语言_Apache - Fatal编程技术网

Apache 不同的域名重定向到不同的语言

Apache 不同的域名重定向到不同的语言,apache,Apache,我最近为我的项目买了几个其他域名 我的问题很简单 我想在我的项目中协调不同语言上的每个域名 Language Lauguage folder Different domains English www.mysite.com/en www.mysite.com Spanish (Spain) www.mysite.com/es www.mysite.es German (Germa

我最近为我的项目买了几个其他域名

我的问题很简单

我想在我的项目中协调不同语言上的每个域名

Language                Lauguage folder        Different domains

English                 www.mysite.com/en      www.mysite.com

Spanish (Spain)         www.mysite.com/es      www.mysite.es

German (Germany)        www.mysite.com/de      www.mysite.de
在上面这个例子中

如果有人转到www.mysite.de,系统会将他们重定向到www.mysite.com/de/,并从url中隐藏/de/

如果有人访问www.mysite.es,系统会将他们重定向到www.mysite.com/es/并从url中隐藏/es/

如果有人访问www.mysite.en,系统会将他们重定向到www.mysite.com/com/,并从url中隐藏/en/


知道如何处理吗?

如果站点中的语言目录是phsycal目录,则不需要使用“重写”。这非常简单,只需在apacheconf中为每种语言声明一个虚拟主机

<VirtualHost *:80>
    DocumentRoot /path/to/mysite/en
    ServerName www.mysite.com
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /path/to/mysite/de
    ServerName www.mysite.de
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /path/to/mysite/es
    ServerName www.mysite.es
</VirtualHost>
编辑2:


编辑了重写条件,仍然允许使用旧格式www.mysite.com/de等。

我想在服务器上执行此操作。。通过htaccess文件或mod_别名文件。您的站点语言是否在不同的物理目录中?另外,您有权更改conf文件吗?如果两者的答案都是肯定的,那么我的答案就是最佳解决方案。如果任何人的答案都是否定的,那么您只能使用“重写”。mod_别名在htaccess中不可用。是。。我的网站有5种不同的语言。。如果我通过www.example.com/es访问,每种语言都可以使用,因此它可以加载西班牙语内容,其他语言也可以使用。所以我最近为更好的搜索引擎优化系统购买了一些特定市场的域名。。所以我希望我的网站的西班牙语域名是www.example.es等等。。。你知道怎么做吗。。我完全厌倦了寻找解决方案。。。非常感谢。我想我现在了解情况了。你能在你的htaccess中试用我的新答案吗?我是这样试的。。但每当我通过www.example.es/test,它就会重定向到。。。
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST}  ^www\.mysite\.com$ [NC]
RewriteCond %{REQUEST_URI}  !^/en/ [NC]
RewriteCond %{REQUEST_URI}  !^/de/ [NC]
RewriteCond %{REQUEST_URI}  !^/es/ [NC]
RewriteRule ^([^/]+)?/?$ /en/$1  [L,QSA]

RewriteCond %{HTTP_HOST}  ^www\.mysite\.de$ [NC]
RewriteCond %{REQUEST_URI}  !^/de/ [NC]
RewriteRule ^([^/]+)?/?$ /de/$1  [L,QSA]

RewriteCond %{HTTP_HOST}  ^www\.mysite\.es$ [NC]
RewriteCond %{REQUEST_URI}  !^/es/ [NC]
RewriteRule ^([^/]+)?/?$ /es/$1  [L,QSA]