0

目前有两个要求

  1. 将 /olddirectory/ 重写为 /newdirectory/
  2. 将 /newdirectory/pagename-3049103/ 重写为 /newdirectory/pagename/

我使用以下方法实现了步骤#1:

RewriteRule ^olddirectory/(.*)$ newdirectory/$1 [R=301,L]

在第 2 步中需要帮助

  • 内容位于/newdirectory/pagename-3049103/
  • 我想清理 url 并显示为 /newdirectory/pagename/

任何帮助是极大的赞赏

4

1 回答 1

0

在第一条规则中,您指定了 301 客户端重定向。这不是强制性的,并且具有对每个请求进行第二次客户端-服务器往返的副作用。如果您不介意浏览器维护旧路径(即站点/旧目录/xxx),您可以简单地重写为:

RewriteRule ^olddirectory/(.*)$ newdirectory/$1

此外,我还删除了 [L] 标志,因为它表明将不再进行重写,我认为您希望至少对页面名称进行另一次重写

如果 pagename-3049103/ 中的尾随数字始终相同,则只是:

RewriteRule ^/newdirectory/pagename/?$ /newdirectory/pagename-3049103/ [L] 

但我怀疑页面名称在 url 上,所以它是:

RewriteRule ^/newdirectory/$1/?$ /newdirectory/pagename-$1/ [L]

注意:现在您可以添加 [L] 标志,因为它是要计算的最后一条规则

于 2013-08-10T12:54:24.653 回答