emz*_*ero 3 asp.net redirect http-status-code-301
我在GoDaddy上托管了一个ASP.NET网站.我需要将每个请求重定向(301)到https://www.example.com/whatever
例如:
这在Linux或cPanel主机上是小菜一碟.但是我不知道怎么在GoDaddy上做这个(我问过支持,但他们似乎什么都不知道......).我想用IIS很容易,但是GoDaddy没有给你IIS访问权限.
那么有没有办法通过Web.config或C#来做到这一点?最好是web.config
查看我的这篇文章,它提供了许多不同的选项来避免ASP.NET站点中的重复URL:防止网站中重复URL的技术.我已经总结了下面的各种技术,但是请参阅文章以获得更深入的处理,以及示例ASP.NET网站演示.
您可以检查Global.asax文件Application_BeginRequest事件处理程序中每个请求的传入URL .如果URL缺少前导,www.您可以将其附加并永久重定向到新URL.
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Url.Authority.StartsWith("www"))
return;
var url = string.Format("{0}://www.{1}{2}",
Request.Url.Scheme,
Request.Url.Authority,
Request.Url.PathAndQuery);
Response.RedirectPermanent(url, true);
}
Run Code Online (Sandbox Code Playgroud)
如果您的网站由IIS7托管并且安装了Microsoft的URL重写模块,则可以在Web.config文件中添加重写规则.我没有任何托管GoDaddy的网站,所以我不知道他们是否使用IIS7(我想他们会这样做)或者他们是否安装了URL Rewrite Module.检查支持.
假设满足这些先决条件,您将使用以下配置:
<configuration>
...
<system.webServer>
<rewrite>
<rules>
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^yoursite\.com$" />
</conditions>
<action type="Redirect" url="http://www.yoursite.com/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
许多Web托管公司都安装了第三方URL重写应用程序,例如ISAPI_Rewrite.我不知道GoDaddy是否有这个,你需要检查支持.但这可能是另一种选择.
www.您可以让用户按照他们的意愿到达您的网站,而不是担心将用户重定向到该版本,但可以在页面中添加标记,以告诉搜索引擎您的网址的规范形式.
要指定规范URL,只需在网页部分添加一个<link>元素即可<head>.其工作方式如下 - 将以下标记添加到<head>您希望搜索引擎考虑所有相同URL的网站中这些页面的部分:
<link rel="canonical" href="canonical_url" />
Run Code Online (Sandbox Code Playgroud)
如果您在Stackoverflow.com上执行查看/来源,您将看到此<link>标记.这是确保您网站中重复网址的好方法 - 例如,www.yoursite.com/foo.aspx并且yoursite.com/foo.aspx被视为搜索引擎索引中的相同条目.
快乐编程!
| 归档时间: |
|
| 查看次数: |
3115 次 |
| 最近记录: |