问题:
如何在相似的情况下编写规则?
我的规则:
RewriteRule ^blog/([0-9]+)/[-0-9a-zA-Z]+/?$ index.php?action=blog&postID=$1 [NC]
RewriteRule ^blog/([0-9]+)/[-0-9a-zA-Z]+/?$ index.php?action=blog&category=$1 [NC]
我想要完成的是:
domain.com/blog/1/title-of-post
和domain.com/blog1/name-of-category
这可能吗?我有什么选择?
答案 0 :(得分:1)
由于URI略有不同,您应该可以在.htaccess
:
RewriteRule ^blog/([0-9]+) index.php?action=blog&postID=$1 [L]
RewriteRule ^blog([0-9]+)/ index.php?action=blog&category=$1 [L]
我们不需要[NC]
标志,因为我们只匹配一个数字。 [L]
标志告诉Apache如果匹配则停止处理。由于您没有对标题进行任何操作,因此无需一直搜索到行尾。找到 postID 或类别后,我们应该拥有所有信息。
要同时匹配两者,您可以在单个规则中尝试此操作。
RewriteRule ^blog([0-9]+)/([0-9]+) index.php?action=blog&category=$1&postID=$2 [L]
RewriteRule ^blog/([0-9]+) index.php?action=blog&postID=$1 [L]
RewriteRule ^blog([0-9]+)/ index.php?action=blog&category=$1 [L]
如果您正在设置Virtual Hosts
,那么您必须添加前面的斜杠:
RewriteRule ^/blog/([0-9]+) /index.php?action=blog&postID=$1 [L]
RewriteRule ^/blog([0-9]+)/ /index.php?action=blog&category=$1 [L]