我想在Rails中"伪造"一个404页面.在PHP中,我只是发送带有错误代码的标头:
header("HTTP/1.0 404 Not Found");
Run Code Online (Sandbox Code Playgroud)
如何用Rails完成?
我正在使用RC2
使用URL路由:
routes.MapRoute(
"Error",
"{*url}",
new { controller = "Errors", action = "NotFound" } // 404s
);
Run Code Online (Sandbox Code Playgroud)
以上似乎照顾这样的请求(假设默认路由表由初始MVC项目设置):"/ blah/blah/blah/blah"
覆盖控制器本身中的HandleUnknownAction():
// 404s - handle here (bad action requested
protected override void HandleUnknownAction(string actionName) {
ViewData["actionName"] = actionName;
View("NotFound").ExecuteResult(this.ControllerContext);
}
Run Code Online (Sandbox Code Playgroud)
但是,之前的策略不处理对Bad/Unknown控制器的请求.例如,我没有"/ IDoNotExist",如果我请求这个,我从Web服务器获取通用404页面而不是我的404,如果我使用路由+覆盖.
最后,我的问题是: 有没有办法在MVC框架中使用路由或其他东西来捕获这种类型的请求?
或者我应该默认使用Web.Config customErrors作为我的404处理程序并忘记所有这些?我假设如果我使用customErrors,由于Web.Config对直接访问的限制,我必须在/ Views之外存储通用404页面.
我@font-face
在我公司的网站上使用,它的工作/看起来很棒.除了Firefox和Chrome将在该.woff
文件上引发404错误.IE不会抛出错误.我有字体位于根,但我已经尝试使用css文件夹中的字体,甚至给出了字体的整个网址.如果从我的css文件中删除这些字体,我没有得到404,所以我知道这不是语法错误.
另外,我使用fontsquirrels工具来创建@font-face
字体和代码:
@font-face {
font-family: 'LaurenCBrownRegular';
src: url('/laurencb-webfont.eot');
src: local('?'),
url('/laurencb-webfont.woff') format('woff'),
url('/laurencb-webfont.ttf') format('truetype'),
url('/laurencb-webfont.svg#webfontaaFhOfws') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'FontinSansRegular';
src: url('/fontin_sans_r_45b-webfont.eot');
src: local('?'),
url('/fontin_sans_r_45b-webfont.woff') format('woff'),
url('/fontin_sans_r_45b-webfont.ttf') format('truetype'),
url('/fontin_sans_r_45b-webfont.svg#webfontKJHTwWCi') format('svg');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud) 我正在教自己一些基本的刮擦,我发现有时我输入到我的代码中的URL返回404,这会使我的所有其余代码变得粗糙.
所以我需要在代码顶部进行测试,以检查URL是否返回404.
这似乎是一项相当直接的任务,但谷歌没有给我任何答案.我担心我在寻找错误的东西.
一篇博客推荐我用这个:
$valid = @fsockopen($url, 80, $errno, $errstr, 30);
Run Code Online (Sandbox Code Playgroud)
然后测试以查看$ valid是否为空.
但我认为给我问题的URL有一个重定向,所以$ valid对所有值都是空的.或许我做错了什么.
我也查看了"头部请求",但我还没有找到任何可以使用或尝试的实际代码示例.
建议?这是关于卷曲的?
if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
header('HTTP/1.0 404 Not Found');
}
Run Code Online (Sandbox Code Playgroud)
为什么不这样做?我得到一个空白页面.
我有一个动作,它接受一个用于检索一些数据的字符串.如果此字符串导致没有返回数据(可能因为它已被删除),我想返回404并显示错误页面.
我目前只是使用返回一个特殊视图,该视图显示特定于此操作的友好错误消息,指出未找到该项目.这样可以正常工作,但理想情况下会返回404状态代码,以便搜索引擎知道此内容不再存在,并且可以将其从搜索结果中删除.
最好的方法是什么?
它是否像设置Response.StatusCode = 404一样简单?
当有人键入不调用ASP.NET MVC中的有效操作或控制器的URL而不显示通用的"未找到资源"ASP.NET错误时,我试图创建自定义HTTP 404错误页面.
我不想使用web.config来处理这个问题.
是否有任何类型的路由魔法可以捕获任何无效的URL?
更新:我尝试了给出的答案,但我仍然得到丑陋的"资源未找到"消息.
另一个更新:好的,显然RC1中发生了一些变化.我甚至尝试过专门捕获404 HttpException
,它仍然只是给了我"资源未找到"页面.
我甚至使用过MvcContrib的资源功能,没有 - 同样的问题.有任何想法吗?
asp.net asp.net-mvc custom-error-pages asp.net-mvc-routing http-status-code-404
我不想做任何关于Windows 8和固定的特殊或棘手的事情,我只是不希望看到404 Not Found消息,因为IE browserconfig.xml
在我的日志文件中寻找滚动.
有一个简单的browserconfig.xml
文件,我可以放在我的根目录,将满足IE,并作为一个好的占位符,如果我决定以后添加更好的支持Window 8?
我在AngularJS控制器中存储要以HTML格式呈现的图像的源字符串,但是在初始化Angular控制器之前它会产生404.
这是HTML:
<div ng-controller="Cont">
<img src="{{imageSource}}">
</div>
Run Code Online (Sandbox Code Playgroud)
角度控制器:
var Cont = function($scope) {
$scope.imageSource = '/tests.png';
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误(%7D%7D
对应{{
于模板中的错误).
GET https://localhost:9000/%7B%7BimageSource%7D%7D 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
我怎样才能防止这种情况发生?也就是说,只在Angular控制器初始化时才加载图像?
我一直在Chrome控制台上注意到这个错误:
我修改了谷歌的脚本,以便记录错误,因为它使用了try{} catch{}
,这就是我得到的:
我没有注意到统计数据的相当大的变化,它总是起伏不定.
此外,这不仅在我的网站上,而且在各处都是如此.我没有找到错误报告或类似的东西.
如果我在浏览器上访问http://www.google-analytics.com/ga.js,则会正常加载.
有没有人知道是什么原因引起的?
asp.net-mvc ×3
http ×2
php ×2
angularjs ×1
asp.net ×1
css ×1
font-face ×1
header ×1
http-headers ×1
javascript ×1
ruby ×1
validation ×1
windows-8 ×1
woff ×1