同一网站空间上的两个域,但通过 htaccess 和 GET 参数具有不同的内容/语言

Posted

技术标签:

【中文标题】同一网站空间上的两个域,但通过 htaccess 和 GET 参数具有不同的内容/语言【英文标题】:Two domains on same webspace but different content / language by htaccess and GET parameters 【发布时间】:2019-06-27 03:53:35 【问题描述】:

我需要一个重写规则或其他一些解决方案来访问类似的页面

www.domain.com/feature.php?lang=de

来自

www.domain.de/feature.php

位于同一网络空间
www.domain.com.

从头开始:

我有一个域名

www.domain.com 

具有由语言 GET 参数触发的多语言内容。

例如:

www.domain.com/features.php?lang=fr 

将从数据库中加载法语内容,而

www.domain.com/features.php 

显示默认的英文内容。

对于 SEO 友好的干净 url,我创建了以下通用 htaccess 重写规则:

RewriteRule ^/?(.*)/(.*).php /$2.php?lang=$1 [L,QSA]

这将使网址像

www.domain.com/features.php?lang=fr

可从 SEO 友好版本访问:

www.domain.com/fr/features.php

还有其他语言,如

www.domain.com/features.php?lang=it

被此覆盖,可以通过干净的 url 访问

www.domain.com/it/features.php

我需要的是针对德语特殊情况的解决方案,因为对于德语,我有一个名为 domain.de 的专用域。所以它不应该被像

这样的路径 URL 访问
www.domain.com/de/features.php 

与其他语言一样,但来自

www.domain.de/features.php

我可能必须将 domain.de 的域目标指向与 domain.com 相同的网络空间,因为它们共享相同的 php 文件、样式表和图像。

我不知道如何编辑 htaccess 文件以覆盖 .de 域。

请考虑,除了隐藏的 lang 参数外,还有一些页面也需要传递一些 GET 参数。他们不需要隐藏。他们只需要通过。比如

www.domain.com/features.php?lang=de&a=1&b=2

应该可以从

访问
www.domain.de/features.php?a=1&b=2

我当前的 htaccess RewriteRule 已经在末尾通过 [L,QSA] 涵盖了 .com/x/ 域的附加参数。但我不知道如何设置它以涵盖来自 .de 域的访问,包括偶尔出现的 GET 参数。

它应该是一个通用的解决方案。所以我不必为我的每个 php 文件输入一行,而是应该覆盖所有 php 文件名,就像上面已经存在的 RewriteRule 已经为 .com 域所做的那样。

谢谢。

【问题讨论】:

这应该对你有帮助:***.com/a/7101306/9421134 @CodiMech25 嗯不是真的,因为我的情况有点复杂。或者我太笨了,不能把它放在一起。 【参考方案1】:

我认为,这至少应该给你一个起点:

Options -Indexes
RewriteEngine On

RewriteCond %HTTP_HOST ^www.example.de$[OR]
RewriteCond %HTTP_HOST ^example.de$
RewriteRule ^/?(.*)$ http://www.example.com/de/$1 [R=301,L,QSA]

RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^/?(.*)/(.*).php /$2.php?lang=$1 [L,QSA]

【讨论】:

以上是关于同一网站空间上的两个域,但通过 htaccess 和 GET 参数具有不同的内容/语言的主要内容,如果未能解决你的问题,请参考以下文章

同一站点的两个单独域上的重定向问题

.htaccess:重定向而不更改 url

已解决 - .htaccess 在服务器上产生 404,但通过 htaccess 验证器

同一页面上的多个 wmd 文本区域

.htaccess 旧域到新域 301 重定向,但只有域,而不是页面

htaccess 将旧域重定向到新域