mod_rewrite使用日期正则表达式的规则



我正在尝试编写一个规则,当用户在此 url 中键入时:

domain.com/09/13/2013/thisIsMyPageTitle

该 URL 保留在浏览器窗口中,但会显示此 URL 中的内容:

domain.com/contentlibrary/thisIsMyPageTitle

这是我的规则,我目前收到错误:

RewriteEngine On
RewriteRule ^((0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)dd[/])$(.*) /contentlibrary/$1  [L]

我正在尝试将日期与正则表达式匹配,并在第二个包含内容并实际存在的 url 中使用初始 url 中的 (.*)。

如果你不打算对日期做任何事情,那么为什么要费心精确地使用日期语义。您可以简化正则表达式:

RewriteRule ^[0-9]+/[0-9]+/[0-9]+/([^/]+)/?$ /contentlibrary/$1 [L]

您遇到的错误可能是因为正则表达式中有未转义的空格。具体来说,这些:

[- /.]

空格被mod_rewrite解释为参数之间的分隔符。此外,您还有以下内容:

$(.*)

在模式的末尾。$字符串的末尾匹配,因此您希望交换这些字符串:

(.*)$

所以:

^((0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)dd[/])(.*)$

应该是您想要的模式。

最新更新