同一网站空间上的两个域,但通过 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 在服务器上产生 404,但通过 htaccess 验证器