我是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
索引)工作正常,但其他规则不起作用,问题是什么?
答案 0 :(得分:2)
您的意思是[\s\S]*
(=包含换行符的零个或多个字符),而不是[/s/S]
。在我看来,URL中不应出现换行符,这就是为什么您可以安全地使用.*
。
此外,第一条规则将匹配第二条规则应该匹配的内容(因为.*
匹配任何字符而不是换行符,它也会与最终的/
匹配,因此您需要交换它们。