我的.htaccess文件中的正则表达式有问题。
这就是我现在所拥有的:
RewriteRule ^([a-z0-9\-_]+)/?(.*) $2 [NC]
RewriteRule ^page/([a-z0-9\-_]+)/? page.php?id=$1 [NC,QSA]
第一条规则应该删除一个可选的"部分"部分来自路径,所以这两个:
/section-2/news.php?id=73
/news.php?id=73
导致
/news.php?id=73
这很好。
第二条规则应该发送这些路径:
/section-2/page/page-title
/page/page-title
为:
/page.php?id=page-title
但是第一个RewriteRule显然是从没有"部分"的路径中删除/ page /。因此,第二条规则并不适用。
有关如何解决此问题的任何建议?如果第一部分是/ page /?
,如何使第一条规则不匹配答案 0 :(得分:0)
你可以在模式中定义单词“section”吗?
RewriteRule ^(section[a-z0-9\-_]+)/?(.*) $2 [NC]
答案 1 :(得分:0)
经过更多的谷歌搜索和反复试验后,我想出了第一条规则,它排除了从第/页开始的路径。
RewriteRule ^((?!page/)[a-z0-9\-_]+)/?(.*) $2 [NC]
这似乎有效,但如果有人遇到这个问题,并就如何改进或优化这些规则提出任何建议,请分享!