正则表达式.htaccess

时间:2016-12-07 13:04:05

标签: regex apache .htaccess

我有一个简单的.htaccess要求,我失败了,并会欣赏指针。

旧CMS中的内容正在迁移到WordPress。旧的CMS帖子按以下方式格式化:

{postid}-example-post-title

例如

101-this-is-an-old-post

我有一个映射表,将旧的帖子ID链接到新的WordPress帖子ID,因此理论上\{oldid-*}应该很好地映射到WordPress标准\?p={newid}格式。我希望以下内容能够将旧的URL 101-this-the-post重定向到1660的WordPress帖子:

Redirect 301 /101-.*$ /?p=1660

regexp /101-.*$正确匹配,但由于某种原因,我的.htaccess文件似乎无法识别正则表达式。这是我的完整htaccess文件:

RewriteEngine Off
SetEnv DEFAULT_PHP_VERSION 56
DirectoryIndex index.cgi index.php

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

Redirect 301 /101-(.*) /?p=1660

我已经尝试将Redirect移动到文件顶部,文件底部和IfModule块之间无效。我明显遗漏了一些东西 - 任何想法都很受欢迎

1 个答案:

答案 0 :(得分:0)

根据julp上面的评论,这个问题的解决方案是使用RewriteRule。以下工作正常,使用IfModule块放置:

RewriteRule 301 /101-(.*) /?p=166
相关问题