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


.htaccess: how to write rule for matching url, then match url with parameters

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

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

news URL 是一些文章的索引页,因此为了访问文章,我编写了以下规则:

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索引)工作正常,但其他规则不起作用,问题出在哪里?

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

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