0

我在网上搜索以找到解决我的问题的有效解决方案,但没有任何效果。希望你们能帮助我。

我想在 Apache 上重写一个 URL:

(1.) www.example.com/en/rainbow.html => www.example.com/index.php?site=rainbow&lang=en

或者

(2.) www.example.com/rainbow.html =>www.example.com/index.php?site=rainbow&lang=

或者

(3.) www.example.com//rainbow.html =>www.example.com/index.php?site=rainbow&lang=

老实说,我对正则表达式的理解不是很好。

试过:

RewriteEngine On
RewriteRule ^(.+)[/](.+).html|(.+).html$ index.php/?lang=$1&site=$2 [QSA]

结果:没有错误,但“站点”在 (1.) 处只有一个参数。

RewriteEngine On
RewriteRule ^(.*[/]){0,1}(.*).html$ index.php/?lang=$1&site=$2 [QSA]

结果:工作正常,但即 lang="en/",应该是 lang="en"

我可以通过哪种方式改进它并让它正常工作?!

非常感谢!!

4

2 回答 2

0

尝试这个:

RewriteEngine On
RewriteRule (/en/)?([^/]+)\.html$ index.php/?site=$2lang=$1 [QSA]

顺便说一句,不需要在 mod-rewrite 中转义正斜杠。但是您确实需要转义.,如您所知,它在正则表达式中作为通配符存在。

于 2013-06-14T13:21:21.527 回答
0

我不是 url 重写方面的专家,但我喜欢考拉:

RewriteRule /+(([^/]+)/)?([^/]+)\.html$ /index.php/?site=$3&lang=$2 [QSA]
于 2013-06-14T14:05:15.643 回答