我想记录请求的URL,但返回404。
我有一个由IIS7服务的php网站。我在web.config文件中将不存在的URL重定向到404页面:
InvalidOperationException
我还:
IEnumerable<string> queries =
from r in LandingSilo.Relationships
where r.RelationshipType == 1
join n in LandingSilo.Nodes on r.SlaveKey equals n.Key
from q in n.Queries.SingleOrDefault(q => q.Seq == r.QueryId)
where q != null
select q.Query;
我能在网上找到的所有内容都说我可以从php变量 <httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="https://www.example.com/404.php" responseMode="Redirect" />
</httpErrors>
获取所请求的原始URL,但对我来说,总能给我<system.web>
<customErrors defaultRedirect="https://www.example.com/404.php" mode="On">
<error redirect="https://www.example.com/404.php" statusCode="404" />
</customErrors>
</system.web>
。
是否知道如何获取请求的原始URL?我的web.config的设置方式似乎阻止了信息的传递。如果我可以将原始网址作为get或post变量传递到404页面,那么我可以用这种方式记录它吗?
答案 0 :(得分:0)
感谢AmmoPT,该链接很有帮助。
首先正确设置web.config:
<system.webServer>
<!-- other system.webServer stuff -->
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.php" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<!-- other system.web stuff -->
<customErrors defaultRedirect="/404.php" mode="On" redirectMode="ResponseRewrite">
<error redirect="/404.php" statusCode="404" />
</customErrors>
</system.web>
请注意,链接必须是相对的才能使其对我有用。上面的操作实际上阻止了重定向-例如example.com/idontexist.php
将显示为url,但该页面的内容将是404.php
页面
然后在404.php文件中,我可以使用$_SERVER['REQUEST_URI'])