我是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 中,这就是为什么您可以安全地使用 .*
代替。
此外,第一条规则将匹配第二条规则应该匹配的内容(因为.*
匹配除换行符以外的任何字符,它也将匹配最终的/
),因此您需要交换它们。