使用mod_rewrite从url中删除数字

时间:2013-10-09 03:23:02

标签: apache .htaccess mod-rewrite

我刚刚将一个网站从Joomla迁移到WordPress,一切正常,但我需要一个规则来从网址中删除日期+时间块。

旧网址就像这样

domain.tld/201009081045/category/subcategory/article.html

我已经删除了.html部分:

#BEGIN sjebani linkovi fix
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

#301 da izbaci html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
#END sjebani linkovi fix

我尝试删除第一个数字块:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /^[0-9]{6-13}$ /$1 [R=301,L]

我的逻辑是找到只有6个字符且短于13个字符的字符串,因为我需要活动日期档案(domain.tld / 2008/12/01等等)。

如何使用mod_rewrite删除第一个数字块?

1 个答案:

答案 0 :(得分:1)

您的正则表达式有点不稳定,您需要匹配日期之后的所有内容才能使$1反向引用工作:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[0-9]{6,13}/(.*)$ /$1 [R=301,L]