1

我正在尝试使用 RewriteRule(使用 ISAPI,而不是在 Apache 服务器上)来 301 重定向 url,例如:

http://www.mydomain.com/news/story-title/

http://www.mydomain.com/news/detail/story-title/

到目前为止我得到的是:

RewriteRule ^news/(?!detail)/?$ news/detail/$1/ [L,R=301]

它成功忽略了其中已经包含“详细信息”的网址(在我的一些第一次尝试中,我最终得到了一个循环和一个类似“/news/detail/detail/detail ...”的网址),但访问/news/ story-title/ 给了我一个 404 所以它没有重定向到正确的位置。

4

1 回答 1

1

将您的重写规则更改为

RewriteRule ^news/(?!detail)([^/]+)/?$ news/detail/$1/ [L,R=301]

编辑:(它是如何工作的?)

/(?!detail)是一个否定的前瞻,但它也是非捕获的,即它匹配/但不匹配它之后的内容;只是确保它不是“细节”。因此,我添加了一个捕获组来捕获那些可选地以 a 结尾的([^/]+)字符(一个或多个+不是 a 的字符) 。//

因此,$1now 被匹配的目录名称替换。

于 2013-08-09T15:58:58.610 回答