url在htaccess中编码重定向

时间:2014-11-20 01:30:33

标签: apache .htaccess redirect

我想做一个简单的htaccess重定向。如果可以的话,希望避免PHP。

我想将用户重定向到将跟踪请求的URL,如下所示:

http://myexample.com/redirect/http%3A%2F%2Fstackoverflow.com%2Fquestions%2Fask

我的htaccess文件:

RewriteEngine on

RewriteRule redirect/(.*) $1 [L,QSA]

但是,我没有得到我想要的结果。有没有办法解码$1的值并重定向到它? (它应该能够处理带有查询字符串的潜在长URL)任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

嗯这很棘手,因为它需要更改Apache配置,以便让你使用编码斜杠,例如网址中的%2F

首先在Apache config中添加这一行:

AllowEncodedSlashes On

重启Apache。

然后在你的root .htaccess中有这条规则让Apache解码并重定向:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/redirect/(http.+)$ [NC]
RewriteRule ^ %1 [L,R,NE]

答案 1 :(得分:0)

您是否尝试过使用HTTP重定向?在HTTP响应状态码301中,Moved Permanently用于永久URL重定向。你可能会做Redirect 301 / http://stackoverflow.com之类的事情。