Apache 重写规则以捕获URL

Apache 重写规则以捕获URL,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我需要阅读写在URL中的URL。。像这样: http://example.com/user/http://google.com/?foo#bar 如果我使用: RewriteRule ^([0-9A-Za-z_]+)/(.+)$ /dab.php?user=$1&url=$2 [L] 传递给$\u GET[“URL”]的URL变为: http:/google.com/ 如何修复它?您需要使用%{THE_REQUEST}捕获此类数据,否则将重写规则中的条带/修改为单个/ 请改用此规则

我需要阅读写在URL中的URL。。像这样:

http://example.com/user/http://google.com/?foo#bar
如果我使用:

RewriteRule ^([0-9A-Za-z_]+)/(.+)$ /dab.php?user=$1&url=$2 [L]
传递给
$\u GET[“URL”]
的URL变为:

http:/google.com/

如何修复它?

您需要使用
%{THE_REQUEST}
捕获此类数据,否则将
重写规则中的条带
/
修改为单个
/

请改用此规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^/]+)/([^\s]+)
RewriteRule ^ /dab.php?user=%1&url=%2 [R=302,L,NE,QSA]
PS:请记住,Apache只会在
#
之前获取URL(这是由浏览器剥离的)。所以Apache将有一个剥离的URL:

http://example.com/user/http://google.com/?foo
更新:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^/]+)/([0-9]+)/([0-9]+)/([^\s]+)
RewriteRule ^ /dab.php?user=%1&num1=%2&num2=%3&url=%4 [R=302,L,NE,QSA]

它说
内部服务器错误
我自己测试过,没有发现任何错误。你确定你抄袭了我的答案吗?您的.htaccess中还有其他规则吗?我只在
和选项+FollowSymLinks上重写了引擎,即使它不起作用。该测试仪不是真正有效的。ok编辑。使用regex从
%{THE_REQUEST}
变量捕获这些变量。