.htaccess:如何编写匹配url的规则,然后将url与参数匹配

时间:2016-03-10 12:19:32

标签: php regex apache .htaccess mod-rewrite

我是htaccess规则的新手,我想制定一个重定向这些网址的规则:

RewriteRule ^news$ index.php?r=news [QSA]
RewriteRule ^news/$ index.php?r=news [QSA]

news网址是某些文章的索引页面,因此要访问我撰写这些规则的文章:

RewriteRule ^news/([/s/S])$ index.php?r=news/p&id=$1 [QSA]
RewriteRule ^news/([/s/S])/$ index.php?r=news/p&id=$1 [QSA]

第一条规则(对于news索引)工作正常,但其他规则不起作用,问题是什么?

1 个答案:

答案 0 :(得分:2)

您的意思是[\s\S]*(=包含换行符的零个或多个字符),而不是[/s/S]。在我看来,URL中不应出现换行符,这就是为什么您可以安全地使用.*

此外,第一条规则将匹配第二条规则应该匹配的内容(因为.*匹配任何字符而不是换行符,它也会与最终的/匹配,因此您需要交换它们。