HTTP ۳۰۱

**[[کد خودتغییردهنده|کد]] وضعیت ۳۰۱**  یکی از کدهای وضعیت پروتکل انتقال ابرمتن می‌باشد که با عنوان *«برای همیشه منتقل شده»*  شناخته می‌شود و برای تغییرمسیر نشانی وب کاربرد دارد. کد وضعیت ۳۰۱، نوعی از کدهای وضعیت برای انتقال دائمی است که هنگام انجام آن، آدرس صفحه‌ای که قبلا وجود داشته است به آدرس جدیدی هدایت می‌شود و پیغام «منتقل شده به صورت دائمی» (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 ۳۰۷

## منابع

رده:کدهای وضعیت پروتکل انتقال ابرمتن