Próbuję tworzyć przekierowania za pomocą .htaccess, ale nigdy nie udaje mi się uzyskać pełnej funkcjonalności. Może ktoś tutaj może mi pomóc.

Potrzebuję:

  1. http://domain.se i http://domain.com, aby przekierować do http://www.domain.com.

  2. Potrzebuję również http://domain.se/somefolder, http://domain.com/somefolder oraz http://www.domain.se/somefolder, aby przekierować do http://www.domain.com/folder.

Próbowałem to zrobić sam, ale skończyłem z błędami o niewysłaniu danych.

0
Jonathan 21 lipiec 2011, 12:36

2 odpowiedzi

Najlepsza odpowiedź
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

# folder rewrite
RewriteRule ^somefolder$ folder [L]

# domain redirect
RewriteCond %{HTTP_HOST} =domain.com [OR]
RewriteCond %{HTTP_HOST} =domain.se
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
  1. Należy to umieścić w pliku .htaccess w folderze głównym witryny. W przypadku umieszczenia w innym miejscu mogą być wymagane pewne poprawki.

  2. Pierwsza reguła przepisuje (wewnętrzne przekierowanie) żądania od /somefolder do /folder. Jeśli potrzebujesz stałego przekierowania 301, zastąp [L] przez [R=301,L]

  3. Druga reguła wykona zadanie przekierowania domeny. Ta reguła będzie przekierowywać TYLKO, jeśli domena to domain.com lub domain.se. Jeśli chcesz mieć przekierowanie z DOWOLNEJ nazwy domeny (którą może obsługiwać Twój serwer WWW) do www.domain.com, zamień te 2 linie RewriteCond na: RewriteCond %{HTTP_HOST} !=www.domain.com.

1
LazyOne 21 lipiec 2011, 13:48
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301]

To powinno spełnić wszystkie Twoje wymagania. Wszystkie żądania, które nie są www.domain.com, zostaną przekierowane do tej domeny z nienaruszonym identyfikatorem URI żądania.

1
Dan Grossman 21 lipiec 2011, 13:21
Czy jest jakiś powód, dla którego mówisz, że użyłeś innego kodu, który został opublikowany 27 minut później, ale jest taki sam, poza tym, że jest zbyt rozwlekły?
 – 
Dan Grossman
21 lipiec 2011, 14:14