如果有人调用我的域名 en.sparkm4n.de 但应该得到 www.sparkm4n.de/index.php?lang=en,我仍然在努力弄清楚如何准确地重定向用户。我想保留子域,但我希望 .htaccess 的脚本完全调用 php 脚本,该脚本会翻译子域内的所有内容。到目前为止,我有 3 个子域名,例如英语的 en.sparkm4n.de,法语的 fr.sparkm4n.de,西类牙语的 es.sparkm4n.de,而顶级域名 www 基本上是德语。到目前为止我尝试过:
RewriteEngine on
RewriteCond %{QUERY_STRING} !^en=
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+)\.sparkm4n\.de$
RewriteRule ^(/?)$ $1?lang=%1en
我不太确定它是否做正确的事情,因为我对 .htaccess 正则表达式完全陌生。 将 3 个子域包含在一个 .htaccess 中并准确地将内容从顶级获取查询提取到子域中,什么是更好的解决方案?子文件夹内没有内容,但它应该重定向到包含所有内容和脚本的顶级域
最佳答案
像这样:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} !(?:^|&)lang= [NC]
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+)\.sparkm4n\.de$ [NC]
RewriteRule ^ %{REQUEST_URI}?lang=%1 [L,QSA]
请注意,如果缺少该参数,这将使用附加的 lang
参数重写每个页面。 这不会在浏览器 URL 中显示 lang
参数,因为我们没有使用 R
标志进行完整(外部)重定向。
关于apache - 将子域重定向到另一种语言的获取查询字符串.htaccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75152041/