2017-03-07 112 views
1

我想让我的.htaccess文件默认重定向到https,但我也想使用语言目录。.htaccess重定向问题与语言

例如我想下面的重定向:

  1. http://example.org - >https://example.org/en/Home
  2. www.example.org - >https://example.org/en/Home
  3. example.org/test?test=test - >https://example.org/en/test?test=test

请注意,设置时,en应该是浏览器的默认语言或cookie'语言'。该Cookie应该职级以上的浏览器的默认

那么,什么我的.htaccess文件看起来像此刻是:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

RewriteCond %{HTTP_HOST} ^www\.example\.org 
RewriteRule ^(.*)$ "https\:\/\/example\.org\/$1" [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^/?$ "/Home" [R=301,L] 
RewriteRule ^([a-zA-Z]{2})/?$ /$1/Home [R=301,QSA,L] 
RewriteRule ^([a-zA-Z]{2})/(.+)?/?$ $2/?Language=$1 [L,QSA] 

RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* ? [F,L,QSA] 

ErrorDocument 404 /404/ 
ErrorDocument 500 /500/ 
+0

您是否正在使用php或mod-rewrite设置lang cookie? – starkeen

+0

不,首页加载默认将会是浏览器的默认语言。但是,在稍后访问时,cookie会被设置。如果您有其他选择,请通知我 –

回答

0

下面条件的尝试,我没有尝试过现在。

RewriteCond %{HTTP_HOST} ^www [OR] 
RewriteRule %{REQUEST_URI} ^(.+?)$ 
RewriteRule^https://example.org/en%{REQUEST_URI} [R=301,L] 
+0

感谢您的回复,但是当设置Cookie语言时,我希望将/ zh /替换为cookie值,例如, de或es或类似的。当cookie未设置时,en应该是浏览器的默认代码 –