我正在尝试使用RewriteRule(使用ISAPI,而不是在Apache服务器上)来重定向网址,例如:
到
到目前为止,我得到的是:
RewriteRule ^ news /(?! detail)/?$ news / detail / $ 1 / [L,R = 301]
成功忽略已经有“细节”的网址(在我的第一次尝试中,我最终得到了一个循环和一个网址,如“/ news / detail / detail / detail ...”),但访问/ news / story-title /给我一个404,所以它不会重定向到正确的位置。
答案 0 :(得分:1)
将重写规则更改为
RewriteRule ^news/(?!detail)([^/]+)/?$ news/detail/$1/ [L,R=301]
编辑 :(工作原理如何?)
/(?!detail)
是一个否定前瞻,但它也是非捕获的,即它匹配/
但不匹配它后面的内容;只是确保它不是“细节”。因此,我添加了一个捕获组([^/]+)
来捕获这些字符(一个或多个+
任何非/
的字符,可选择以/
结尾。
因此,$1
现在被替换为匹配的目录名。