【发布时间】:2018-05-07 04:46:24
【问题描述】:
我想设置 mod_rewrite 来处理多种语言,但我无法让它正常工作。
我希望以下工作:
example.com/en/page/abc -> example.com/page.php?language=en&id1=abc example.com/en/page/abc/def -> example.com/page.php?language=en&id1=abc&id2=def
我的 .htaccess 文件如下所示:
重写引擎开启
重写规则 ^(.*)/page/(.*)/(.*) page.php?case=a1&language=$1&id1=$2&id2=$3
RewriteRule ^(.*)/page/(.*) page.php?case=a2&language=$1&id1=$2
现在,如果我输入 url 'en/page/abc' 它可以正常工作,但如果我输入 'en/page/abc/def' 它会执行第二条规则并给出 'page.php' 作为语言和 'abc /def' 作为 id1 的变量。颠倒顺序仍然会给出“page.php”作为语言的值。有人建议如何解决这个问题?
【问题讨论】:
-
试试
([^/]*)而不是(.*) -
[^/]* 似乎没有用,但谷歌搜索你的贡献将我带到了一个包含解决方案的页面。用 ([a-z]+) 替换第一个 (.*) 就可以了!
-
如何将此问题标记为已解决?
-
相信你可以回答并接受自己的回答
-
最好有解释,以便其他人可以从中受益
标签: apache .htaccess mod-rewrite