首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在DotNetNuke站点中,如何绕过404错误?

在DotNetNuke站点中,如何绕过404错误?
EN

Stack Overflow用户
提问于 2018-06-10 00:30:59
回答 2查看 356关注 0票数 0

我有个网站-- example.com它有静态页面-- example.com/signup、example.com/faq等。

但是,我希望能够拥有“example.com/some search-term”。当然,页面上没有“某些搜索词”。

我尝试在404错误页面上安装一个自定义模块,该模块将获取查询字符串,并根据该搜索条件显示一些信息。但是,我仍然得到一个404错误"HTTP404: NOT FOUND -服务器没有找到任何与请求的URI (统一资源标识符).Get-http://example.com/some-search-term匹配的内容。“而且页面是空白的。

当404页面被触发时,我可以调试我的模块,并看到一切工作正常,但没有显示最终结果。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-12 22:24:37

我用一种不同的方式解决了这个问题。

DNN提供默认的404页。我简单地添加了一个自定义模块,用于评估Page_Load()上的状态代码:

代码语言:javascript
复制
        _rcode = Response.StatusCode;
        if (_rcode == 404) //we're on our 404 page
        {
            Response.Clear();
            Server.ClearError();
        }

然后,该模块在查询字符串上执行一些数据库查找,以查看是否有任何匹配。如果有,它将重定向到相应的页面。如果没有匹配,那么我会生成一个404错误。

我试图将所有内容都保留在404页面上,但是我做不到,因为页面“example.com/ some search-term”实际上并不存在,一些页面组件是不可用的-- IsPostBack、ViewState、Session等等--所以很难生成一个可以正常工作的页面。即使将Response.StatusCode设置为200也不起作用。

最终,我试图阻止google看到404错误,除非我想这样做。这似乎起到了作用。

票数 0
EN

Stack Overflow用户

发布于 2018-06-11 21:35:54

对于这种情况,我建议使用IIS重写规则或重写映射。您可以通过web.config所指向的web.config或单独的文件来执行此操作。如果你为每个学期设置了一个重定向,你就可以正常工作了。

例如:在Web.config

代码语言:javascript
复制
<rewrite>
  <rewriteMaps configSource="fmrewrites.config" />
  <rules configSource="fmrules.config" />
</rewrite>

并且在fmrewrites.congig

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<rewriteMaps>
  <rewriteMap name="FmRedirects">
    <add key="www.siteexample.com/," value="https://www.siteexample.com/" />
  </rewriteMap>
</rewriteMaps>

或在fmrules.config

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<rules>
    <clear />
    <rule name="FmRewrites" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
            <add input="{FmRedirects:{HTTP_HOST}{REQUEST_URI}}" pattern="(.+)" ignoreCase="true" />
        </conditions>
        <action type="Redirect" url="{C:1}" appendQueryString="false" />
    </rule>
</rules>

你可以在这个via MS Docs上读到很多东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50776344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档