在php和iis上记录404网址

时间:2018-08-20 17:01:46

标签: php iis web-config http-status-code-404

我想记录请求的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页面,那么我可以用这种方式记录它吗?

1 个答案:

答案 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'])

检测网址