【问题标题】:.htaccess RedirectMatch Syntax.htaccess 重定向匹配语法
【发布时间】:2015-03-10 00:48:50
【问题描述】:

我花了很长时间试图在 301 重定向上获得正确的语法。我已经在网上进行了很多研究,但由于我对此完全陌生,所以它对我来说并没有点击。我希望这里有人可以提供帮助。

我正在输入一个规则,该规则将使用以下格式更改所有链接:

http://www.example.com/yyyy/mm/dd/page-name

http://www.example.com/category/page-name

在上面的示例中,“/yyyy/mm/dd/”对于任意数量的日期都是可变的。这是一个 Wordpress 迁移,新主题不允许我们保留永久链接的日期和名称格式,我们正在努力保留几年的 SEO“链接汁”。

出于各种原因,我更喜欢使用 301 重定向而不是重写。提前致谢!

编辑添加:这是我的尝试,我认为我有用于重写和重定向的混合语法(除其他外):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ /category/$4/

【问题讨论】:

  • 能否分享一下您的配置文件内容?

标签: wordpress .htaccess mod-rewrite redirect


【解决方案1】:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ /category/$4 [L,R=301,NC]

【讨论】:

  • 这是重定向到博客存档页面 (www.example.com/category/),我可以让它工作。它要么没有获取 $4 反向引用,要么正在应用其他重写规则或类似的东西。
  • 你能把你的整个htaccess文件贴出来吗
  • 我的原始 htaccess 文件在我的第一篇文章中。我采用了您建议的重写规则并替换了以下行;重写规则。 /index.php [L]
  • @igotid32 - 该规则不应替换 . /index.php [L],而应将其放在前面。所以把它放在那个规则之前。按顺序,您将拥有跳过文件和目录的两个条件,然后您将拥有新规则(如本答案中的第 3 行),然后是 index.php 的规则。
【解决方案2】:

我似乎已经得到它的工作:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RedirectMatch 301 ^/[0-9]{4}/[0-9]{2}/[0-9]{2}/(.*)$ http://www.example.com/category/$1/
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

感谢所有回复的人,它至少帮助我缩小了范围。

【讨论】:

    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 2021-11-30
    • 2012-05-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多