多语言网站,子目录语言(重写规则) [英] Multilanguage site, subdirectories as language (RewriteRule)

查看:147
本文介绍了多语言网站,子目录语言(重写规则)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有关我的网站,我想重写我的网址为:

For my website i want to rewrite my url to:

www.xxx.com/en/index.php代替www.xxx.com/index.php?language=en
  而不是www.xxx.com/index.php?language=nl www.xxx.com/nl/index.php

www.xxx.com/en/index.php instead of www.xxx.com/index.php?language=en
www.xxx.com/nl/index.php instead of www.xxx.com/index.php?language=nl

www.xxx.com应www.xxx.com/en~~V /

www.xxx.com should be www.xxx.com/en/

这实际工作我已经添加了这些重写规则

This actually works i have added these rewrite rules

的RewriteCond%{HTTP_HOST}%{REQUEST_URI} ^ WWW \ .XXX \ .COM(\ /?)$
重写规则(。*) http://www.xxx.com/en/ $ 1 [R = 302,L]

重写规则^(NL | EN)/ $ $ 2语言= $ 1安培(*);?%{QUERY_STRING} [L]

在R = 302添加用于测试目的

RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www\.xxx\.com(\/?)$
RewriteRule (.*) http://www.xxx.com/en/$1 [R=302,L]

RewriteRule ^(nl|en)/(.*)$ $2?language=$1&%{QUERY_STRING} [L]

The R=302 is added for testing purposes

是上面给出的RewriteCond和重写规则不够好,或有其他的,也许更短或更好的方法来重写的.com /以.COM / EN /

Are the above given RewriteCond and RewriteRule good enough or are there other, maybe shorter or better ways to rewrite .com/ to .com/en/

如果该URL被编辑到不存在,我想这个用户是重定向到英语的语言。

If the url is edited to a language that does not exists i want this user to be redirect to english.

示例
www.xxx.com/es/index.php要求,这种语言不存在,或没有语言给出我希望用户被重定向到www.xxx.com/en/index.php~~V

Example
www.xxx.com/es/index.php is requested, this language does not exists or no language is given i want the user to be redirect to www.xxx.com/en/index.php

我试过如下:

重写规则^([^ N] [^ L] | [^ E] [^ N])(。*)/ $ EN / $ 2%{QUERY_STRING} [L,R = 302]

I tried the following:

RewriteRule ^([^n][^l]|[^e][^n])/(.*)$ en/$2%{QUERY_STRING} [L,R=302]

此工作在一些情况下,但如果www.xxx.com/ne/index.php输入它被认为是有效的,而不是重写。 www.xxx.com/index.php也没有改写为www.xxx.com/en/index.php~~V

This works in some cases but if www.xxx.com/ne/index.php is entered it is considered as valid and not rewritten. www.xxx.com/index.php is also not rewritten to www.xxx.com/en/index.php

有人能帮助我解决这个问题?

Could someone help me to fix this?

在此先感谢!

推荐答案

试试这个规则:

RewriteCond $1 !^(en|nl)$
RewriteRule ^([a-z]{2})/(.*)$ en/$2 [L,R=302]

这篇关于多语言网站,子目录语言(重写规则)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆