当有?id =时RewriteRule

时间:2016-05-13 14:47:21

标签: regex .htaccess mod-rewrite

我尝试在.htaccess中写一个RewriteRule但是我有问题

我尝试重定向:

blog/entrada.php?id=2 

致:

/blog/3D-touch

这是我尝试过但不起作用的多项内容之一:

RewriteRule ^blog\/entrada\.php\?id=2$ /blog/3D-touch [L,R=301]

我的规则有什么问题。如何有效地重定向?

由于

2 个答案:

答案 0 :(得分:2)

Querystring不是RewriteRule指令中匹配的一部分,要重定向查询字符串,您需要使用RewriteCond以下选项之一:

选项1

RewriteEngine on

RewriteCond %{THE_REQUEST} /blog/entrada\.php\?id=2 [NC]
RewriteRule ^ /blog/3D-touch? [NC,L,R]

选项2

RewriteEngine on

RewriteCond %{QUERY_STRING} ^id=2$ [NC]
RewriteRule ^blog/entrada\.php$ /blog/3D-touch? [NC,L,R]

我们在目标网址末尾使用空白问号来丢弃旧的查询字符串,否则这些查询字符串会默认显示在目标网址上。

如果要将重定向设为永久性,请将 R 更改为 R = 301

答案 1 :(得分:0)

使用此代码

RewriteRule blog/(.*) blog/entrada.php?id=$1

此代码将重定向所有具有博客/博客/ entrada.php的网址,并将博客/后面的值放到$ _GET ['id']

你应该在你的htaccess文件的顶部位置有以下代码

Options +FollowSymLinks
RewriteEngine on