Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/10.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 Mod Rewrite:使用不同语言的不同域_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache Mod Rewrite:使用不同语言的不同域

Apache Mod Rewrite:使用不同语言的不同域,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我正在开发一个多语言网站。我为每种语言使用不同的子域,它们指向同一个文件夹。同一个网站使用.po文件进行翻译 现在,我正在处理漂亮的URL,我需要每个子域都有自己的一套规则 例如: en.domain.com/contact pt.domain.com/contato es.domain.com/contacto 我的简化htaccess如下所示: <IfModule mod_rewrite.c> Options -Multiviews RewriteEngine On Rewri

我正在开发一个多语言网站。我为每种语言使用不同的子域,它们指向同一个文件夹。同一个网站使用.po文件进行翻译

现在,我正在处理漂亮的URL,我需要每个子域都有自己的一套规则

例如:

en.domain.com/contact
pt.domain.com/contato
es.domain.com/contacto
我的简化htaccess如下所示:

<IfModule mod_rewrite.c>
Options -Multiviews
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^en.domain.com$ [NC]
RewriteRule ^contact/$ /contact.php 
RewriteRule ^contact$ /contact.php [L]

RewriteCond %{HTTP_HOST} ^pt.domain.com$ [NC]
RewriteRule ^contato/$ /contact.php
RewriteRule ^contato$ /contact.php [L]

RewriteCond %{HTTP_HOST} ^es.domain.com$ [NC]
RewriteRule ^contacto/$ /contact.php
RewriteRule ^contacto$ /contact.php [L]


</ifModule>

选项-多视图
重新启动发动机
重写基/
RewriteCond%{HTTP_HOST}^en.domain.com$[NC]
重写规则^contact/$/contact.php
重写规则^contact$/contact.php[L]
RewriteCond%{HTTP_HOST}^pt.domain.com$[NC]
重写规则^contato/$/contact.php
重写规则^contato$/contact.php[L]
RewriteCond%{HTTP_HOST}^es.domain.com$[NC]
重写规则^contacto/$/contact.php
重写规则^contacto$/contact.php[L]
问题是,如果我尝试从一个域到另一个域的自定义url,它仍然有效。例如,葡萄牙语中的“/contato”字仍然会在英语中打开“/contact”url


所以我想要的是,每个域只遵循它指定的一组规则,而不是文件中的每一条规则。有什么想法吗?

为什么不将所有内容发送到主控制器(也称为“index.php”)并从代码端进行处理,这样会容易10倍,将来您可以轻松地以任何方式切换它。因为当我这样做的时候,我总是在标题上得到一个404错误,尽管这个站点工作正常。我担心这个404标题可能会影响谷歌排名。你得到404是因为你做错了什么,检查你的日志和其他信息,看看你做错了什么,它被重定向到的位置和应该重定向到的位置。还有,为什么这里每个
RewriteCond
都有2个
RewriteRule
?@anubhava一个用于“/contact”,另一个用于“/contact/”