Apache RewriteRule,目录更新然后删除尾部斜杠(美化URL)

时间:2013-08-10 00:02:52

标签: apache .htaccess mod-rewrite url-rewriting clean-urls

目前有两个要求

  1. 重写/ olddirectory / to / newdirectory /
  2. 重写/ newdirectory / pagename-3049103 /到/ newdirectory / pagename /
  3. 我使用以下方法完成了第1步:

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

    在第2步中需要帮助

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

    非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

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

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

此外,我删除了[L]标志,因为它表示不会进行任何进一步的重写,我认为你想要至少为页面名做另外的重写

如果pagename-3049103 /中的尾随数字总是相同,那就是:

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

但我怀疑页面名称位于网址,所以它是:

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

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