2016-05-13 60 views
1

我试着写在.htaccess重写规则一个,但我有问题重写规则时,有ID =

我尝试从重定向:

blog/entrada.php?id=2 

要:

/blog/3D-touch 

这是我尝试过的多种事情之一,并且不起作用:

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

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

感谢

回答

2

查询字符串是不匹配的重写规则指令的一部分,重定向查询字符串,你需要使用的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] 

我们使用一个空的问号在目标网址的末尾丢弃旧的查询字符串,否则这些查询字符串会默认被添加到目标网址。

更改[RR = 301,如果你想使重定向永久。

+0

这两个选项工作得很好。在选项1 RewriteRule中,你为什么要写^你能解释一下吗? – segon

0

使用此代码

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

该代码会重定向具有博客的所有URL /博客/ entrada.php和博客的价值后把/至$ _GET [“身份证” ]

你应该有下面的代码n您的htaccess文件的顶部位置

Options +FollowSymLinks 
RewriteEngine on 
+0

我不明白你的答案。我不想重定向所有具有博客/博客/ entrada.php的网址。我在我需要从blog \/entrada \ .php \?id = 2直接指向/ blog/3D-touch或者什么是相同的3D-touch.php的问题中说过(因为我有另一个要去除的规则。 php) – segon

+0

实际上,当用户输入/blog/3D-touch.php请求去blog \ entrada.php?id = 2? –

+0

博客/ entrada.php?id = 2不存在。这就是为什么我要重定向 – segon