【问题标题】:.htaccess rewrite 301 rules not working.htaccess 重写 301 规则不起作用
【发布时间】:2016-04-06 11:06:30
【问题描述】:

我正在简化我的 URL,但遇到了一个关于在 htaccess 文件中使用 Rewrite 的问题。

搜索引擎目前按以下格式列出我的页面

www.example.com/x/x/article_a/1159/

目前被/x/x目录下的以下htaccess文件重写

RewriteRule walk_a/(.*)/$ /x/x/article_a.php?id=$1

这已经好几年了。

我想将 URL 简化为

www.example.com/article-1159-introduction

我已经尝试了以下放置在根目录中的重定向

RewriteRule ^x/x/article_a/(.*)/$ http://www.example.com/article-$1-introduction [R=301,NC,L]
RewriteRule ^article-(.*)-introduction$ /x/x/article_a.php?id=$1

虽然第二个重写命令工作正常,但 301 重写似乎没有效果。

我做错了什么?

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    /x/x/.htaccess 目录内使用此规则:

    RewriteEngine On
    
    RewriteRule ^article_a/(.*)/$ /article-$1-introduction [R=301,NC,L,NE]
    

    那么在root .htaccess 里面有这个规则:

    RewriteEngine On
    
    RewriteRule ^article-(.+)-introduction$ /x/x/article_a.php?id=$1 [L,QSA]
    

    【讨论】:

    • 感谢您的回复。我有两个 htacess 文件 - 一个在 /x/x 中,一个在根目录中
    • article_a.php 是否位于 /x/x/ 内部?
    • 是的,我就是这么想的。您是否尝试过我更新的答案(在 .htaccess 中都需要一个规则)
    • 只需三步就可以了!非常感谢您的帮助。我现在必须尝试并理解它为什么有效!
    • 如果我有多个重写规则,我需要删除括号中的L标签吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多