mod_rewrite子目录作为变量

时间:2011-08-26 19:35:15

标签: .htaccess mod-rewrite apache2

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

我们目前的重写仅改写为“SKU.html”。

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

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

示例网址为:

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

MFG和1234是可能发生变化的变量。

1 个答案:

答案 0 :(得分:0)

嗯,这个应该为你做的工作:

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字符等。如果您需要限制它 - 只需将模式([^/]+)修改为您想要的任何限制;
    • date部分验证非常简单 - 只允许数字和-。所以即使123456-09876也会奏效。再一次 - 如果你需要更精确的验证,只需按照模式;
    • SKU部分 - 与MFG部分相同的验证。
  3. 此规则旨在放在网站根文件夹中的.htaccess中。如果放在其他地方,可能需要进行一些小的调整。