| HTTP |
| --- |
|  |
| * تداوم
* Compression
* HTTPS
 |
| روش‌های درخواست |
| * OPTIONS
* GET
* HEAD
* POST
* PUT
* DELETE
* TRACE
* CONNECT
* PATCH
 |
| زمینه‌های سرآیند |
| * Cookie
* ETag
* Location
* HTTP referer
* DNT
* X-Forwarded-For
 |
| کدهای وضعیت |
| * ۳۰۱ برای همیشه منتقل شده
* ۳۰۲ موقتاً منتقل شده
* ۳۰۳ موارد دیگر
* خطای ۴۰۳
* خطای ۴۰۴
* خطای ۴۵۱
 |
| * ن
* ب
* و
 |

**کد وضعیت ۳۰۱** (به انگلیسی: HTTP 301) یکی از کدهای وضعیت پروتکل انتقال ابرمتن می‌باشد که با عنوان *«برای همیشه منتقل شده»* (به انگلیسی: Moved Permanently) شناخته می‌شود و برای تغییرمسیر نشانی وب کاربرد دارد. بدین معنی که پیوندهای کنونی یا رکوردها با استفاده از نشانی وبی که پاسخ دریافت کرده‌است باید به‌روز رسانی شود. استفاده از این کد به ویژه هنگامی سودمند است که به هر دلیل نشانی پیوند سایت دچار تغییراتی شده‌است و برای هدایت ربات‌ها یا کاربران به پیوند اصلی، از آن استفاده می‌شود.

نمونه‌ها
--------

درخواست کلاینت:

```
GET /index.php HTTP/1.1
Host: www.example.org

```

درخواست سرور:

```
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp

```

نمونه استفاده از فایل htaccess برای تغییرمسیر به یک اس‌اس‌ال پیوندخورده با دامنهٔ بدون www:

```
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(. *)$ [NC]
RewriteRule ^(. *)$ http://%1/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(. *)$ [NC]
RewriteRule ^(. *)$ https://%1/$1 [R=301,L]

RewriteEngine On
RewriteCond %{SERVER_PORT} ۸۰
RewriteRule ^(. *)$ https://example.com/$1 [R,L]

```

نمونه‌ای از تغییرمسیر در پی‌اچ‌پی:

```
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://example.com/newpage.html%22);
exit();
?>

```

معادل ساده برای پیکربندی انجین اکس:

```
location /old/url/ {
  return 301 /new/url;
}

```

در صورتی که از asp.net استفاده می کنید، می‌توانید از URL Rewrite استفاده کنید و اگر آن را روی سرور ندارید می‌توانید از کد زیر در صفحه خود استفاده کنید

ASP.NET:

```
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.new-location.com");
}
</script>

```

در صورتی که از asp.net استفاده می کنید و به سرور می‌توانید ریموت بزنید، از iis به صورت مستقیم بهره ببرید ...

IIS (on a Windows server):

```
1.In internet services manager, right click on the file or folder you wish to redirect.
2.Select "a redirection to a URL".
3.Enter the redirection page.
4.Check "The exact url entered above", and the "A permanent redirection for this resource".
5.Click "Apply".

```

در صورتی که از asp.net استفاده می کنید و می‌توانید ماژولی روی سرور نصب کنید، راهکار ساده تری برای شما استفاده از URL Rewrite module for IIS 7 است. شما می‌توانید با سرچ همین کلمه در گوگل آن را دانلود کنید و به سادگی روی سرور ویندوز نصب نمایید

Canonical Redirect using IIS 7.0
web.config file:

```
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="http://www.domain.com/{R:0}"
 redirectType="Permanent" />
</rule>
</rules>
</rewrite>
  </system.webServer>
</configuration>

```

جستارهای وابسته
---------------

* پروتکل انتقال ابرمتن
* مرورگر وب
* سرور وب
* HTTP ۳۰۲
* HTTP ۳۰۳
* HTTP ۳۰۷

منابع
-----

1. ↑  
مشارکت‌کنندگان ویکی‌پدیا. «HTTP 301». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۱۵ بهمن ۱۳۹۳.

* درگاه اینترنت