.htaccess当空字符串时RewriteRule

时间:2012-07-02 17:51:05

标签: .htaccess mod-rewrite

我正在尝试做这样的事情http://myweb.com//page

如果第一个参数不存在,则仅处理第二个参数。 第一个是语言,它存储在会话中,但是可以更改为?lang=en ..

我正在尝试这样的事情,但它不起作用

RewriteRule ^([a-zA-Z_]+)?/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2

2 个答案:

答案 0 :(得分:2)

尝试将它们作为2个单独的规则,因为删除了前导斜杠。

RewriteRule ^([a-zA-Z_]+)/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2 [L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,QSA]

答案 1 :(得分:1)

在我之前使用过的语言可切换网站上,我选择了始终在网址中使用该语言,它更容易实现,并且对用户来说更好看。

RewriteRule ^$ /en/ [L]   #default language
RewriteRule ^([^/]+)/(.+)$ index.php?lang=$1&page=$2 [QSA,NE]   # first "slug" is presumed always language the rest is a page identifier

此处不是指向/ en /您可以指导没有语言设置的用户,指向geoip脚本或用于填充用户代理字符串以获取语言代码的脚本,以使猜测更准确。