.htaccess破折号分隔符2参数或更多

时间:2013-08-07 14:56:36

标签: regex .htaccess

我正在使用.htaccess,我只想制作友好的网址。

我当前的网址:

www.url.com/index.php?v=[SOMETHING]&i=[IDIOM]

但它也可以是:

www.url.com/index.php?v=[SOMETHING]

我想要的是什么:

www.url.com/[SOMETHING]-[IDIOM]

或者在第二种情况下:

www.url.com/[SOMETHING]
我做了

.htaccess配置:

RewriteRule ^([^/]+)-([^/]+)?$ index.php?v=$1&i=$2

写网www.url.com/[SOMETHING]-[IDIOM]没问题,网页正常运行。 但在第二种情况下,我必须写www.url.com/[SOMETHING]**-**。如果我写www.url.com/[SOMETHING]分页符。

所以,我想让第二个参数可选,如果可能的话用破折号分隔。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

它与www.url.com/[SOMETHING]不匹配,因为它最终需要-。在第二个捕获组中包含-,如下所示:

^([^/]+?)(-[^/]+)?$

还将第一个贪心量词改为懒惰量词以避免匹配过多。

答案 1 :(得分:0)

您只需添加第二条规则

即可
RewriteRule ^([^/]+)-([^/]+)?$ index.php?v=$1&i=$2
RewriteRule ^([^/]+)$ index.php?v=$1

答案 2 :(得分:0)

我建议您使用一个名为Helium的项目。该文档位于此处:访问https://github.com/iamyogik/Helium

它将为您完成所有这些工作,而您不必担心任何事情。您可以在/{var1}/{var2}/之间传递变量参数,也可以同时使用$_GET or $_POST请求。