enpl

Blog

26
Gru

Przekierowania URL w pliku .htaccess, PHP i ASP.NET

Przekierowania URL w pliku .htaccess, PHP i ASP.NET

W niniejszym przewodniku pragnę Państwu przedstawić kilka najpopularniejszych a zarazem najbardziej przydatnych sposobów przekierowań adresów URL za pomocą dyrektyw zawartych w pliku .htaccess – czyli tzw. pliku konfiguracyjnym serwera Apache, który umożliwia zmianę konfiguracji dla konkretnego katalogu na naszym serwerze. Omówione poniżej przekierowania zdefiniowane są w dokumentacji RFC 2616 dotyczącej protokołu HTTP.

(Dla początkujących – plik .htaccess z odpowiednimi dyrektywami umieszczamy w katalogu na który wskazuje domena, której tyczyć ma się dana operacja.)

301 moved permanently (tłum. trwale przeniesiony) – Przekierowanie 301 pozwala na przeniesienie adresu URL na jakikolwiek inny adres.

Przekierowanie takie, zwane stałym, oznacza że strona została przeniesiona do nowej lokalizacji, jest również mile widziane w przypadku utrzymania pozycji strony w wyszukiwarce. W rozumieniu algorytmów wielu wyszukiwarek (także Google) „wartość” pierwszego adresu przekazywana jest drugiemu. To znaczy, że jeżeli przekierowujemy stronę np. o wartości rankingu Page Rank 5 to wartość ta przekazywana jest domenie docelowej.

Przekierowania stałego 301 używa się również w sytuacji, jeżeli mamy kilka domen prowadzących do tej samej strony, lub chcemy przekierować „adres roboczy” hostingu (w naszym przypadku np. serwer1304795.home.pl). Wówczas wskazane jest aby wybrać jedną domenę „główną” i przekierować na nią pozostałe adresy, które będą wówczas traktowane jako jedna domena (co najlepiej widać tutaj). Używa się go także w przypadku, kiedy musimy przekierować stronę z przedrostkiem www na bez przedrostka lub odwrotnie – taki zabieg wymagany jest często przy definiowaniu głównego adresu strony choćby w usłudze Narzędzia dla Webmasterów firmy Google.

Poniżej prezentujemy kilka przykładów przekierowań 301 zdefiniowanych w pliku .htaccess:

Przekierowanie adresu server1304795.home.pl na www.kompservis.pl

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?serwer1304795\.home\.pl [NC]
RewriteRule (.*) http://www.kompservis.pl/$1 [R=301,nc]

Przekierowanie adresu bez przedrostka www na adres z www

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

Oczywiście istnieje także inny sposób na przekierowanie tego typu, np. używając odpowiedniego skryptu zapisanego w którymś z języków programowania działającym po stronie serwera. Polega to na umieszczeniu fragmentu kodu w domyślnym pliku na serwerze plików.

Przekierowanie realizowane za pomocą języka PHP

<?php
header(‚HTTP/1.1 301 Moved Permanently’);
header(‚Location: http://www.kompservis.pl/’);
header(‚Connection: close’);
exit();
?>

Przekierowanie realizowane w ASP .NET

<script language=”C#” runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = „301 Moved Permanently”;
Response.AddHeader(„Location”,”http://www.kompservis.pl”);
Response.End();
}
</script>

302 moved temporarily (tłum. tymczasowo przeniesiony) – Przekierowanie 302 jest tymczasowym przeniesieniem. W praktyce niczym nie różni się od przekierowania 301 lecz robotom wyszukiwarek dostarcza istotną informację mówiącą, że adres domeny który przekierowujemy za jakiś czas będzie znów dostępny z tą samą treścią i nie należy go w międzyczasie usuwać z indeksu wyszukiwarki.