Apache .htaccess获取变量作为子域
我有一个网站,我正在手动翻译。正常版本为英语,翻译版本为西班牙语 翻译版本可通过(espanol的es)访问 我希望域后的URL不受翻译更改的影响,因此我尝试使用 这是我的htaccess的当前状态:Apache .htaccess获取变量作为子域,apache,.htaccess,mod-rewrite,url-rewriting,subdomain,Apache,.htaccess,Mod Rewrite,Url Rewriting,Subdomain,我有一个网站,我正在手动翻译。正常版本为英语,翻译版本为西班牙语 翻译版本可通过(espanol的es)访问 我希望域后的URL不受翻译更改的影响,因此我尝试使用 这是我的htaccess的当前状态: RewriteCond %{HTTP_HOST} !^example\.site$ RewriteRule home/$ /index.php [L,QSA] RewriteRule contact-us/$ /contact-us.php [L,QSA] RewriteRule our-loca
RewriteCond %{HTTP_HOST} !^example\.site$
RewriteRule home/$ /index.php [L,QSA]
RewriteRule contact-us/$ /contact-us.php [L,QSA]
RewriteRule our-location/$ /our-location.php [L,QSA]
RewriteRule gallery/$ /gallery.php [L,QSA]
RewriteRule (.*)/$ /user.php?display_name=$1 [L,QSA]
RewriteCond %{HTTP_HOST} !^es\.example\.site$
RewriteRule home/$ /index.php?language=es [L,QSA]
RewriteRule contact-us/$ /contact-us.php?language=es [L,QSA]
RewriteRule our-location/$ /our-location.php?language=es [L,QSA]
RewriteRule gallery/$ /gallery.php?language=es [L,QSA]
RewriteRule (.*)/$ /user.php?language=es&display_name=$1 [L,QSA]
第一套规则在下面^示例.site$all从下面覆盖规则^因此,当我访问包含或不包含“es”子域的页面时,无论采用哪种方式,我都会得到英文版本。如果我将子域规则(和重写条件)置于非子域规则之上,则会发生相同的情况,只是站点仅翻译为西班牙语
任何帮助都将不胜感激
编辑:
由于@hjpotter92的帮助,这些规则已被修改
RewriteRule ^home/?$ /index.php [NC,QSA,S=3]
RewriteRule ^(contact-us|our-location|gallery)/?$ /$1.php [NC,QSA,S=2]
RewriteRule ^(?!user\.php).*/$ /user.php?display_name=$0 [NC,QSA]
RewriteCond %{HTTP_HOST} ^es\.example\.site$ [NC]
RewriteCond %{QUERY_STRING} !language=es [NC]
RewriteRule ^.*$ /$0?language=es [L,QSA]
您可能正试图实现以下目标:
RewriteEngine On
RewriteRule ^home/?$ /index.php [NC,QSA,S=3]
RewriteRule ^(contact-us|our-location|gallery)/?$ /$1.php [NC,QSA,S=2]
RewriteRule ^(?!user\.php).*/$ /user.php?display_name=$0 [NC,QSA]
RewriteCond %{HTTP_HOST} ^es\.example\.com$ [NC]
RewriteCond %{QUERY_STRING} !language=es [NC]
RewriteRule ^.*$ /$0?language=es [L,QSA]
多么快速有效的回答!对非子域规则的修订非常有效。但是由于某种原因,子域规则会抛出500个内部服务器错误。当然。我得到了重复的一行:“由于可能的配置错误,请求超过了10个内部重定向的限制。如果需要,使用'LimitInternalRecursion'增加限制。使用'LogLevel debug'获得回溯。”@awl19再次更新了规则。请检查所做的更改。没有更多的错误,使用子域就是正确地使用get变量,但是不管出于什么原因,继续该域的“子文件夹”使用的是user.php规则,而不是指定的规则。换句话说,实际上是将规则中每个
S=
的值增加1,而不是@awl19。我还将在自己的服务器上运行一些测试。顺便问一下,您使用的是哪一个apache版本?