RewriteRule不能用匹配的正则表达式重写

时间:2014-01-03 16:54:34

标签: regex apache .htaccess mod-rewrite apache2

我正在尝试让apache将mysite.com/blog/<number>的请求重写为文件/blog.php?page=<number>。但是,使用与该路径匹配的正则表达式,不会重写URL,而是返回404,因为/blog/是不存在的目录。

以下是我正在使用的RewriteRule

RewriteEngine On
RewriteRule ^blog/[0-9]+/? /blog.php?page=$1 [L]

我在很长一段时间没有使用过apache,所以我可能忘记了一些非常简单的项目,但是我看不出该规则有什么问题。

修改

来自httpd.conf的重写规则:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*)  https://%{HTTP_HOST}%{REQUEST_URI} [L]

1 个答案:

答案 0 :(得分:1)

您没有使用圆括号对^blog/后的数字进行分组,这就是$1为空的原因。

DOCUMENT_ROOT/.htaccess文件中尝试此规则:

RewriteEngine On
RewriteRule ^blog/([0-9]+)/?$ /blog.php?page=$1 [L,NC,QSA]