Apache 在mod_重写中保留双斜杠

Apache 在mod_重写中保留双斜杠,apache,mod-rewrite,Apache,Mod Rewrite,我到处都在搜索这个答案,发布的答案不符合我的具体情况,因为它给了我404个错误,我不知道为什么 我正试图重写这个:/c.php?url=http://www.example.com 进入这个:/c/http://www.example.com 现在我在我的mod_重写中有这样的内容: RewriteEngine on RewriteRule ^c/(.*)(/)?$ /c.php?url=$1 但是当它重写我试图发送到PHP脚本中的url时,它会写“http:/example.com”,用一个

我到处都在搜索这个答案,发布的答案不符合我的具体情况,因为它给了我404个错误,我不知道为什么

我正试图重写这个:
/c.php?url=http://www.example.com

进入这个:
/c/http://www.example.com

现在我在我的mod_重写中有这样的内容:

RewriteEngine on
RewriteRule ^c/(.*)(/)?$ /c.php?url=$1
但是当它重写我试图发送到PHP脚本中的url时,它会写“
http:/example.com
”,用一个斜杠而不是双斜杠


我已经看到很多关于此的帖子,涉及到_请求规则,但是当我尝试将它们应用到我的htaccess文件时,它们失败了。我不确定出了什么问题,非常感谢您的帮助。

Apache删除了路径中的多个斜杠。如前所述,您可以通过检查_请求中的请求行来解决此问题:


谢谢,秋葵。我必须在/c/([^?\]+])中添加一个+号?允许使用多个字符,但效果很好,尽管我是mod_rewrite新手,而且我很难理解_REQUEST命令是如何工作的。。。还有,有没有办法在发送的URL中保留问号?谢谢@boomboom:_请求表示。如果您想要获取完整的请求路径和查询字符串,那么在c.php中直接从
$\u服务器['REQUEST\u URI']
获取它可能更容易。
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /c/([^?\ ]+)/?
RewriteRule ^c/ /c.php?url=%1