2016-05-13 56 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