我正在尝试编写一个规则,当用户在此 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[/])(.*)$
应该是您想要的模式。