我的.htaccess将所有请求重定向/word_here到/page.php?name=word_here.然后,PHP脚本检查所请求的页面是否在其页面数组中.
如果没有,我该如何模拟错误404?我尝试了这个,但它没有导致我的404页面ErrorDocument在.htaccess显示中配置.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
Run Code Online (Sandbox Code Playgroud)
我是否正确地认为重定向到我的错误404页面是错误的?
我有一个Web Api应用程序.当我使用VS 2010调试开发服务器测试它时,它运行得非常好.但我现在将其部署到IIS 7.5,并在尝试访问应用程序时收到HTTP 404错误.
这是我的web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-FlowGearProxy-20123141219;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="true" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" …Run Code Online (Sandbox Code Playgroud) IHttpActionResult当我的WebApi GET操作中找不到某些内容时,我将返回NotFound .除了这个响应,我想发送自定义消息和/或异常消息(如果有的话).当前ApiController的NotFound()方法不提供传递消息的重载.
有没有办法做到这一点?或者我将不得不写自己的习惯IHttpActionResult?
如果给出路线:
{FeedName}/{ItemPermalink}
例如:/ Blog/Hello-World
如果该项不存在,我想返回404.在ASP.NET MVC中执行此操作的正确方法是什么?
我有以下代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "HEAD";
request.Credentials = MyCredentialCache;
try
{
request.GetResponse();
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)
如何捕获特定的404错误?WebExceptionStatus.ProtocolError只能检测到发生了错误,但未提供错误的确切代码.
例如:
catch (WebException ex)
{
if (ex.Status != WebExceptionStatus.ProtocolError)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
只是没用得多......协议异常可能是401,503,403,真的是什么.
.net c# error-handling exception-handling http-status-code-404
按照此处找到的教程,我无法创建自定义500或404错误页面.如果我输入了错误的网址,该页面会为我提供默认的错误页面.有什么我应该检查,以防止自定义页面显示?
文件目录:
mysite/
mysite/
__init__.py
__init__.pyc
settings.py
settings.pyc
urls.py
urls.pyc
wsgi.py
wsgi.pyc
polls/
templates/
admin/
base_site.html
404.html
500.html
polls/
detail.html
index.html
__init__.py
__init__.pyc
admin.py
admin.pyc
models.py
models.pyc
tests.py
urls.py
urls.pyc
view.py
views.pyc
templates/
manage.py
Run Code Online (Sandbox Code Playgroud)
在mysite/settings.py中我启用了这些:
DEBUG = False
TEMPLATE_DEBUG = DEBUG
#....
TEMPLATE_DIRS = (
'C:/Users/Me/Django/mysite/templates',
)
Run Code Online (Sandbox Code Playgroud)
在mysite/polls/urls.py中:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)
Run Code Online (Sandbox Code Playgroud)
我可以发布任何其他必要的代码,但是如果我使用错误的网址,我应该如何更改以获取自定义500错误页面?
编辑
解决方案: 我有一个额外的
TEMPLATE_DIRS …Run Code Online (Sandbox Code Playgroud) 我的文件WebContent/jsps夹中的JSP文件中有一个HTML表单.我servlet.java在src文件夹中的默认包中有一个servlet类.在我web.xml的映射为/servlet.
我action在HTML表单的属性中尝试了几个URL :
<form action="/servlet">
Run Code Online (Sandbox Code Playgroud)
<form action="/servlet.java">
Run Code Online (Sandbox Code Playgroud)
<form action="/src/servlet.java">
Run Code Online (Sandbox Code Playgroud)
<form action="../servlet.java">
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用.他们都在Tomcat 6/7/8中继续返回如下所示的HTTP 404错误:
HTTP状态404 - /servlet
描述:请求的资源(/ servlet)不可用.
或者如下面的Tomcat 8.5/9:
HTTP状态404 - 未找到
消息:/ servlet
描述:源服务器没有找到目标资源的当前表示,或者不愿意透露存在该资源
为什么不起作用?
在尝试为Google网站站长工具设置我的网站后,我发现我的自定义ASP.NET 404页面未返回404状态代码.它显示了正确的自定义页面并告诉浏览器一切正常.这被认为是软404或假404.谷歌不喜欢这个.所以我发现了很多关于这个问题的文章,但我想要的解决方案似乎没有用.
我想要解决的解决方案是将以下两行添加到自定义404页面的Page_Load方法后面的代码中.
Response.Status = "404 Not Found";
Response.StatusCode = 404;
Run Code Online (Sandbox Code Playgroud)
这不起作用.页面仍然返回200 OK.然而,我发现如果我将以下代码硬编码到设计代码中,它将正常工作.
<asp:Content ID="ContentMain" ContentPlaceHolderID="ContentPlaceHolderMaster" runat="server">
<%
Response.Status = "404 Not Found";
Response.StatusCode = 404;
%>
... Much more code ...
</asp:content>
Run Code Online (Sandbox Code Playgroud)
该页面正在使用母版页.我正在我的web.config中配置自定义错误页面.我真的宁愿使用后面的代码选项但我似乎无法在设计/布局中放入黑客内联代码使其工作.
我使用grunt/karma/phantomjs/jasmine对我的一个指令(angularjs)进行单元测试.我的测试运行良好
describe('bar foo', function () {
beforeEach(inject(function ($rootScope, $compile) {
elm = angular.element('<img bar-foo src="img1.png"/>');
scope = $rootScope.$new();
$compile(elm)();
scope.$digest();
}));
....
});
Run Code Online (Sandbox Code Playgroud)
但我确实得到了这些404
WARN [web-server]: 404: /img1.png
WARN [web-server]: 404: /img2.png
...
Run Code Online (Sandbox Code Playgroud)
虽然它们什么也不做,但它们确实会给日志输出增加噪音.有没有办法来解决这个问题 ?(当然,不改变业力的logLevel,因为我确实希望看到它们)
javascript unit-testing http-status-code-404 angularjs karma-runner
我一直在关注本指南,尽可能多地 http://robsnotebook.com/xampp-ssl-encrypt-passwords.
但是,每当我浏览到以https开头的页面时,apache服务器都会回复404 Object Not Found.
我缺少什么设置?谢谢你的帮助.
c# ×4
asp.net ×2
.net ×1
angularjs ×1
asp.net-mvc ×1
django ×1
forms ×1
html ×1
httpresponse ×1
https ×1
iis-7.5 ×1
javascript ×1
jsp ×1
karma-runner ×1
master-pages ×1
php ×1
python ×1
redirect ×1
servlets ×1
ssl ×1
unit-testing ×1
xampp ×1