我有一个.htaccess文件使用此文件,我通过子域(HTTP_HOST)检测语言代码。
这里没有问题,但是,当我将传入的请求重定向到公用文件夹下的文件时,我得到一个404错误,并且语言变得不可操作。
SetEnv DEFAULT_LANG en
<IfModule mod_rewrite.c>
Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Set the language parameter by HTTP_HOST
RewriteCond %{HTTP_HOST} ^([a-z]{2})\.([a-z0-9-]+\.[a-z]+)$ [NC]
RewriteRule (.*) - [QSA,E=LANGUAGE:%1]
# Set the language parameter default
RewriteCond %{ENV:LANGUAGE} ^$
RewriteRule (.*) - [QSA,E=LANGUAGE:en]
# Set the language query string if absent
RewriteCond %{QUERY_STRING} !language=
RewriteRule ^(.*)$ $1?language=%{ENV:LANGUAGE} [QSA]
# Finally rewrite the request URI to the /public folder
RewriteCond %{REQUEST_URI} !^/public
RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>
字符串
1条答案
按热度按时间6yoyoihd1#
尝试使用以下方法:
字符串
使用上述方法,即使重定向到公用文件夹下的文件时,语言检测也应该起作用。
%{ENV:LANGUAGE}
变量将在整个重写过程中被保留,因此正确的语言参数应该被传递给公用文件夹中的文件。