【问题标题】:htaccess rewrite find part of the slug and remove ithtaccess rewrite 找到部分 slug 并将其删除
【发布时间】:2022-01-20 22:06:23
【问题描述】:

我有这样的帖子:

http://example.com/blog/post-title

我想把它转换成

http://example.com/post-title

使用 htaccess

我试过了:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com/blog/([^\s\?]+)\s [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

【问题讨论】:

    标签: .htaccess redirect http-status-code-301


    【解决方案1】:

    在这种情况下,您可以指示两个 捕获组(使用括号)并且只返回两个组中的第二个。

    示例:

    <IfModule mod_rewrite.c>
    
    RewriteEngine On
    
    RewriteRule ^(blog)/(.+) http://example.com/$2
    
    </IfModule>
    

    重写规则如下:

    如果...

    • 网址以blog开头
    • 后跟/
    • 后跟至少一个或多个字符

    然后重写 URL,使域后跟 /,然后是在第二个捕获组中捕获的一个或多个字符

    NB 您不需要[R=301] 标志,因为提供完整重定向(即以http://https:// 协议开头的重定向)隐含地表明这将是 301 重定向

    【讨论】:

    • 这仍然不适合我,不确定是我的网站还是代码.. 我正在尝试清除缓存并保存永久链接
    • 适用于另一个安装,但不适用于主站点。谢谢,我会弄清楚的。
    • 只是一个提示(尽管在这里可能不相关) - 如果您使用扩展字符集,请不要使用UTF-8 编码保存您的.htaccess 文件因为这可能意味着您的.htaccess 文件被忽略(我还没有弄清楚为什么 - 与字节顺序标记(BOM)有关)。一般来说,我通过编码Western (Windows 1252).htaccess保存为ASCII。
    • 感谢您的提示,我已将其记录在笔记中。问题不在于htaccess文件,当我出错时它确实抛出500错误,但事实证明我必须在最后添加[L]¯_(ツ)_/¯
    猜你喜欢
    • 1970-01-01
    • 2015-10-29
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多