【问题标题】:Remove numbers from url with mod_rewrite使用 mod_rewrite 从 url 中删除数字
【发布时间】:2013-10-09 12:30:54
【问题描述】:

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

旧网址是这样的

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 删除第一个数字块?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

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

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

    【讨论】:

    • 将 {6-13} 更改为 {6,13},它就像一个魅力。谢谢:)
    • @SeeBeen 对不起,我没有仔细看就复制粘贴了
    猜你喜欢
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2016-03-05
    • 2011-03-28
    • 2010-09-09
    • 1970-01-01
    • 2012-03-24
    • 2011-01-22
    相关资源
    最近更新 更多