【问题标题】:mod_rewrite subdirectories as variablemod_rewrite 子目录作为变量
【发布时间】:2011-08-27 04:31:38
【问题描述】:

我正在尝试将“/products/MFG/date/SKU.html”重写为“MFG-SKU.html”

我们下面的当前重写只重写为“SKU.html”。

RewriteCond %{REQUEST_URI} ^/products/
RewriteRule /([^/]*)$ /$1 [R=301,NC,L]

如何将 MFG 作为变量访问以包含在 SKU 之前?

一个示例 URL 是:

http://example.com/products/MFG/2010-04-01/1234.html => http://example.com/MFG-1234.html

MFG 和 1234 是会改变的变量。

【问题讨论】:

  • 请提供一个 URL 示例(真实的 URL 示例)——当看到需要做什么时,构建规则要容易得多。我需要from URL => to URL
  • 谢谢,更新帖子以反映示例

标签: .htaccess mod-rewrite apache2


【解决方案1】:

好吧,这个应该可以为您完成这项工作:

RewriteRule ^products/([^/]+)/[0-9-]+/([^/]+)\.html$ $1-$2.html [R=301,L]
  1. 它将/products/MFG/2010-04-01/1234.html重定向到/MFG-1234.html

  2. 不验证参数(MFG、SKU、日期):

    • MFG 部分可以是 1 个路径段内的任何内容(表示除斜线 / 之外的任何字符):可以是字母、数字、Unicode 字符等。如果您需要限制它 - 只需修改模式 @ 987654326@ 到您想要的任何限制;
    • date 部分的验证非常简单——只允许使用数字和-。所以即使123456-09876 也可以。再说一遍——如果您需要更精确的验证,只需更改模式即可;
    • SKU 部分 - 与 MFG 部分的验证相同。
  3. 此规则旨在放置在网站根文件夹的 .htaccess 中。如果放置在其他地方,可能需要进行一些小的调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多