希望有人可以给我这个提示。的.htaccess重写语言重定向页面的两个版本,保持地址
我的意思是根据浏览器语言和输入的URL(包含其中或不包含/ v2)重定向访问。我想保持原来的URL地址栏,所以我明白我只能用Apache内部重定向,而不是301
URL BROWSER LANGUAGE INTERNAL REDIRECTION
domain.com en en.html
domain.com/v2 en en_v2.html
domain.com es es.html
domain.com/v2 es es_v2.html
domain.com other en.html
domain.com/v2 other en_v2.html
所以这是我在.htaccess曾尝试:
#mod_rewrite on
RewriteEngine on
#Default language redirection
RewriteRule ^.*$ en.html
RewriteRule ^.*?v2$ en_v2.html
#Redirection by Language en
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^.*$ en.html
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^.*?v2$ en_v2.html
#Redirection by Language es
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^.*$ es.html
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^.*?v2$ es_v2.html [L]
所有的HTML文件都在根文件夹,相同.htaccess文件。这样一来,我试图让某些重写“覆盖”以前的改写,例如
RewriteRule ^.*$ es.html
它匹配的一切,会被
RewriteRule ^.*?v2$ es_v2.html
的情况下/ V2被覆盖在URL 。但我不确定它是如何工作的。
有人可以帮助我吗?
EDIT:解决,这是最后的版本:
#mod_rewrite on
RewriteEngine on
#Allow direct access to html files
RewriteRule ^en(_v2)?\.html - [L]
RewriteRule ^es(_v2)?\.html - [L]
#Without this the css and other files are redirected and won't load properly
RewriteRule \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml|eot|svg|ttf|woff)$ - [L]
#Redirection by Language
RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule ^v2$ es_v2.html [L]
#Redirection by Language
RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule .* es.html [L]
#Defaults
RewriteRule ^v2$ en_v2.html [L]
RewriteRule .* en.html [L]
由于'en'与'other'相同,似乎最好将它视为'es'和“世界其他地方”。处理'es',如果不是这样,那么处理其他所有事情。 – 2012-08-16 13:36:47
当然!之后我添加了世界其余的部分,但没有再给它一个想法,你是对的。 – jrg 2012-08-17 14:50:57