我需要重写规则或其他一些解决方案来访问类似
的页面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]
这将使url像
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。因此,不应通过
这样的路径网址来访问它www.domain.com/de/features.php
与其他语言一样,但来自
www.domain.de/features.php
我可能必须将domain.de的域目标指向与domain.com相同的Web空间,因为它们共享相同的php文件,样式表和图像。
我不知道如何编辑htaccess文件以覆盖.de域。
请考虑,除了hidden 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域已经存在。
谢谢。
答案 0 :(得分:0)
我认为,这至少应该为您提供一个起点:
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]