使用mod_rewrite在重定向上解码URL

时间:2019-02-19 14:53:36

标签: regex apache mod-rewrite

我正在尝试从我的Apache服务器内部重定向到外部google文档,但似乎无法解码该URL,因此任何帮助都将非常有用。

我有以下代码

RewriteCond %{QUERY_STRING} ^(.*)com(.*)
RewriteRule ^redirect(.*) https://external.example.com/%2 [R=302,QSD]

我正在使用此代码重定向以下URL

http://my.example.com/redirect?url=https%3A%2F%2Fdocs.google.com%2Fforms%2Fd%2Fe%2F*SomeGoogleStuffHere*%2Fviewform

访问此URL(它是做什么的,非常接近我的需要)

https://my.example.com/%252Fforms%252Fd%252Fe%252F*SomeGoogleStuffHere*%252Fviewform

第二个URL的编码导致我出现问题。为了进行测试,我自己通过浏览器地址栏删除了编码,并将其替换为“ /”。这行得通,所以我知道我在正确的道路上。

但由于这不是可接受的解决方案,所以我得到了:

  

错误404-找不到页面

尝试到达时

  

https://docs.google.com/my_redirected_url

我尝试了多项尝试都无济于事

下面的我的.htaccess文件

RewriteEngine on # Turn on RewriteEngine
//EXPECTED == > Replace all "%2F" WITH '/'
#RewriteCond %{QUERY_STRING} "^([^%2F]*?)(?:%2F)+([^%2F]+?(?:%2F)+.*)$"
#RewriteRule ^ %{REQUEST_URI}?%1/%2 [N,NE]

//EXPECTED == > Replace all "%2F" WITH '/'
#RewriteCond %{QUERY_STRING} "^([^%2F]*?)(?:%2F)+([^%2F]+?)/?$"
#RewriteRule ^ %{REQUEST_URI}?%1/%2/ [L,R=302,NE]

//EXPECTED == > Replace all "%2F" WITH '/'
RewriteCond %{QUERY_STRING} "^([^%2F]*?)(?:%2F)+([^%2F]+?(?:%2F)+.*)$"
RewriteRule %{REQUEST_URI}?%1/%2 [N,NE]

RewriteCond %{QUERY_STRING} ^(.*)com(.*)$
RewriteRule ^redirect(.*) https://docs.google.com/%2 [r=301,QSD]

this answer很有帮助,但似乎可以满足PHP的需求。

我只使用了mod_rewrite大约一个星期左右,我感觉好像缺少了一些简单的东西,但是无法用手指指着它。

0 个答案:

没有答案