大家好,我真的很困惑这个问题。我试着描述一下:
问题是: http://mydomain.com/somedir/somephp.php?arg1=value&arg2=http://otherdomain.com&arg3=http://othertoo.com/somepath/something ... 完全失败。有 url 编码,也没有。
我的站点读取了 mydomain.com/everything 之后的所有内容,但存在的文件和目录除外。我正在使用 mod_rewrite:
Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ handler.php
上面的查询示例登陆 handler.php。如果我注释掉 RewriteRule,就会出现 apache 错误:
Forbidden
You don't have permission to access /somedir/somephp.php on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
经过大量测试等,我发现 url 参数中的 http:// 或 :// 字符串存在问题。但它以 url 编码的形式出现:S
这东西应该是一个 openId 身份验证系统,它在回发时失败,我确定 url 参数中的 url 会产生这个错误。
我以前从未遇到过这个问题,尽管我做了很多同样的事情。url 编码的东西必须工作。
请帮我!谢谢!
“完全失败”是什么意思?你得到什么错误代码?您的服务器文件中有什么错误?出现了什么?
你的重写规则很好!权限错误无关紧要,因为它不是您要服务的文件,只要 handler.php 是可访问的。
但是我认为您的错误是上面的配置不完全是您尝试过的配置。如果你有这样的:
您将失去我们的查询字符串参数,因为它被 a=b 覆盖。然后你可以做的是:
它告诉 apache 附加您的查询字符串 (QSA=QueryStringAppend)