我正在尝试设置一个重定向,将人们发送到正确的语言子目录(在wordpress安装上,但这与我认为不相关):
如果来自example.com或example.eu域(example.com/cur / ...)没有任何语言子目录(/ en或/ de),我想将它们发送到example.com/cur / EN /...
如果他们来自example.de域,并且他们在url中没有任何语言子目录,我想将它们发送到example.de/cur/de /...
我的.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /cur/
RewriteRule ^http://(www\.)?example\.(eu|com)/cur((?!/en|/de).)*$ http://$1example.$2/cur/en$4 [R=301,L]
RewriteRule ^http://(www\.)?example\.(de)/cur((?!/en|/de).)*$ http://$1example.$2/cur/de$4 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /cur/index.php [L]
</IfModule>
你能看到我遗失的东西吗?
答案 0 :(得分:0)
你应该使用mod_rewrite的%{HTTP_HOSTNAME}
:
RewriteCond %{HTTP_HOSTNAME} ^example\.de$
RewriteRule /(.*) http://example.com/cur/de/$1 [R]
等等。
但我不明白为什么你使用.htaccess。对于VirtualHost
ServerAllias
个条目来说,它确实是一项工作,并使用相同的原则将重写规则放在该vhost中。
答案 1 :(得分:0)
试试这个:
RewriteEngine On
RewriteCond %{HTTP_HOST} example\.(com|eu)$
RewriteCond %{REQUEST_URI} !^(/cur)?/(en|de)/
RewriteRule ^(.*)$ /cur/en/$1 [R=301,L]
RewriteCond %{HTTP_HOST} example\.de$
RewriteCond %{REQUEST_URI} !^(/cur)?/(en|de)/
RewriteRule ^(.*)$ /cur/de/$1 [R=301,L]