我正在尝试编写一条规则,当用户输入此网址时<:p>
domain.com/09/13/2013/thisIsMyPageTitle
该网址停留在浏览器窗口中,但会显示此网址的内容:
domain.com/contentlibrary/thisIsMyPageTitle
这是我的规则,我目前收到错误:
RewriteEngine On
RewriteRule ^((0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d[/])$(.*) /contentlibrary/$1 [L]
我正在尝试将日期与正则表达式匹配,并使用第二个中保存内容且实际存在的初始URL中的(。*)。
答案 0 :(得分:3)
如果您不打算对日期做任何事情,那么为什么要精确地使用日期语义呢? 您可以简化正则表达式:
RewriteRule ^[0-9]+/[0-9]+/[0-9]+/([^/]+)/?$ /contentlibrary/$1 [L]
答案 1 :(得分:0)
您获得的错误可能是因为您的正则表达式中没有未转义的空格。特别是这些:
[- /.]
mod_rewrite将空格解释为参数之间的分隔符。另外,你有这个:
$(.*)
在你的模式结束时。 $
匹配字符串的结尾,因此您需要交换的内容:
(.*)$
所以:
^((0[1-9]|1[012])[-\ /.](0[1-9]|[12][0-9]|3[01])[-\ /.](19|20)\d\d[/])(.*)$
称为你想要的模式。