我正在尝试从我的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-找不到页面
尝试到达时
我尝试了多项尝试都无济于事
下面的我的.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大约一个星期左右,我感觉好像缺少了一些简单的东西,但是无法用手指指着它。