1. Forum używa plików Cookies. Dowiedz się więcej o celu ich używania i możliwości zmiany ustawień Cookies w przeglądarce. Czytaj więcej...

ROZWIĄZANE Redirect w .htaccess (za pomocą :Location)

Dyskusja w 'WordPress, Joomla!, PHP, HTML, CSS' rozpoczęta przez użytkownika Bazyl, 26 Sierpień 2016.

  1. Bazyl

    Bazyl Początkujący

    Wiadomości:
    9
    Docenione treści:
    1
    Dzień dobry,

    nie działa w htaccess

    Redirect /aaa http://domena.pl/bbbbbbb

    Znalazłem w pomocy (u Was wszystko musi być inaczej?!) to:

    :Location /aaaaa
    Redirect /bbbbbbbbbbbbbb
    :Location

    I nie działa.

    Jak zrobić przekierowanie z jednego adresu na drugi w obrębie jednej domeny?

    Dziękuję
     
  2. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    Możesz podać mi link, pod którym znalazłeś informacje o funkcji :Location ? Nie jest to sugerowane rozwiązanie, dlatego chciałbym odpowiednio zmodyfikować dokumentacje i skierować ruch do artykułu o tzw. przekierowaniu 301. W takich sytuacjach sugerujemy właśnie korzystać z przekierowania 301 w .htaccess - więcej informacji tutaj: https://pomoc.home.pl/baza-wiedzy/przekierowanie-301-w-pliku-htaccess/

    Przekierowanie z jednego adresu na drugi w ramach tej samej domeny:
    Kod:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?twojadomena\.pl$ [NC]
    RewriteRule ^adres1(\/.*)?$ http://www.twojadomena.pl/adres2 [R=301,L]
     
  3. Bazyl

    Bazyl Początkujący

    Wiadomości:
    9
    Docenione treści:
    1
  4. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    @Bazyl pozwoliłem sobie zaktualizować informacje w naszej dokumentacji na temat korzystania z funkcji :Location na naszych serwerach. Więcej informacji można znaleźć w artykule, który podałeś: https://pomoc.home.pl/baza-wiedzy/inne-przydatne-funkcje-w-pliku-htaccess/

    Sugerujemy korzystanie z przekierowania 301, ale jeśli chcesz skorzystać z funkcji :Location to wpis pownien wyglądać tak:
    Kod:
    :Location /stare_strony/
    Redirect temp /nowe_strony/
    :Location
    Przy odwołaniu się do katalogu „/stare_strony” zostanie wykonane przekierowanie z kodem 302 (Moved Temporarily) na katalog „/nowe_strony”. Poniższy wpis powinien zostać umieszczony w pliku .htaccess, który znajduje się w katalogu /stare_strony. We wpisie nie musi znajdować parametr temp, można go usunąć lub umieścić inny parametr, np. permanent – wtedy podczas przekierowania zostanie zwrócony status 301 Moved Permanently oraz wykonane zostanie przekierowanie.

    Wszystko sprawdziłem i przetestowałem na swoim serwerze. Temat ustawiam jako rozwiązany.
     
  5. Bazyl

    Bazyl Początkujący

    Wiadomości:
    9
    Docenione treści:
    1
    Nie chcę korzystać z funkcji :Location :)

    Szukałem, bo nie działa to, co działa na innych serwerach...


    Dlaczego nie działa zwykłe?
    Redirect 301 /aaa /bbbbbbt


    Mam tych wpisów "trochę", więc chcę sobie maksymalnie uprościć.
     
  6. Bazyl

    Bazyl Początkujący

    Wiadomości:
    9
    Docenione treści:
    1
    Wydawało mi się, że jeszcze nie zakończyliśmy :)

    Nie działają u Was standardowe przekierowania w .htaccess.
    Dodanie Redirect 301 /stara-podstrona /nowa-podstrona powoduje błąd przekierowania, a wszystko wchodzi na adres domena.pl/stara-podstrona.

    Taka sytuacja...

    Poproszę o zapis, jak najprościej przekierować wiele adresów:

    /stara-podstrona --> /nowa-podstrona
    /stara-podstrona2 --> /nowa-podstrona2
    /stara-podstrona3 --> /nowa-podstrona3

    oraz grupę adresów zawierających np. wyraz LATO na adres /zima


    Bardzo dziękuję :)
     
    Ostatnia modyfikacja: 6 Wrzesień 2016
  7. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    @Bazyl skonsultowałem temat z kierownikiem produktu oraz administratorami i otrzymałem potwierdzenie, że planujemy dostosować naszą platformę w taki sposób, aby wszystkie reguły znane ze standardowego Apache'a funkcjonowały również poprawnie na naszych serwerach.

    Jako kolejną propozycję rozwiązania proponuję poniższe przekierowanie 301, z którego skorzystałem przy jednym projekcie. Poniższe wpisy pozwoliły "ładnie" przepisać stare adresy na nowe (Google zmieniło linki w swoim indeksie na nowe i strona WWW nie straciła na pozycjonowaniu podczas zmiany adresów).
    Kod:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?twojadomena.pl\.pl [NC]
    RewriteRule ^stare1$ https://twojadomena.pl/nowe1 [R=301]
    RewriteRule ^stare2$ https://twojadomena.pl/nowe2 [R=301]
    RewriteRule ^stare3$ https://twojadomena.pl/nowe3 [R=301,L]
    
    @Bazyl daj proszę znać czy takie rozwiązanie jest ok, abym mógł ustawić odpowiedni status dla tematu.
     
  8. Bazyl

    Bazyl Początkujący

    Wiadomości:
    9
    Docenione treści:
    1
    Niesamowite...


    Niestety te reguły nie działają (a w drugim wierszu dodatkowo jest błąd).

    Myślałem, że problem jest tylko na tej nowej platformie, ale nie.
    Na starej też nie działają reguły, które wcześniej działały.

    Pięknie

    Naprawdę nikt wcześniej tego nie zauważył?!
     
  9. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    Kierownik produktu oraz administratorzy znają tę sprawę już od jakiegoś czasu, ja niestety nie znałem, nie posiadam wszystkich informacji, dlatego musiałem ten temat skonsultować (gdzie podczas konsultacji otrzymałem potwierdzenie planów wprowadzenia wszystkich dyrektyw znanych ze standardowego Apache'a). Serwery w home.pl funkcjonują na platformie, która nie jest typowym Apache'em i z tego powodu niektóre dyrektywy znane z Apache'a nie funkcjonują. Nasi administratorzy mają na tapecie wdrożenie wszystkich dyrektyw z czasem.

    Czy masz na myśli zaproponowane przez ze mnie przekierowanie 301 w poprzednim moim poście? Przed chwilą ponownie sprawdziłem i przekierowania zbudowane w taki sposób na moim prywatnym serwerze w home.pl funkcjonują poprawnie (wykonywane jest przekierowanie 301 na podany adres). Możesz napisać więcej o wspomnianym błędzie w drugiej linijce, może coś przeoczyłem.
     
  10. LorK

    LorK Przyjaciel forum Beta-tester

    Wiadomości:
    1 064
    Docenione treści:
    96
    a wiadomo kiedy? :)
     
  11. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    jest to kwestia najbliższych miesięcy, na pewno nie kilku tygodni. Tyle informacji mogę odkryć na ten temat.
     
  12. Bazyl

    Bazyl Początkujący

    Wiadomości:
    9
    Docenione treści:
    1
    Pięć miesięcy od założenia wątku, dwa od ostatniej odpowiedzi: jesteśmy na finiszu?
     
  13. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    Ponowiłem zapytanie do kierownika produktu, wrócę tutaj do tematu z odpowiedzią jak sprawa wygląda.
     
  14. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    @Bazyl nie mam dobrych wiadomości odnośnie globalnej aktualizacji - mogę na tę chwilę zapewnić, że temat dostosowania reguł przekierowań do formy znanej z Apache'a jest na naszej roadmapie i z pewnością te reguły dostosujemy, ale terminów nie mogę żadnych podać.

    Poniżej podaję dwa przykłady, które mogą coś rozjaśnić w temacie poprawnych przekierowaniach, które funkcjonują na naszych serwerach.

    Można taki efekt uzyskać poprzez dyrektywę REQUEST_URI. Poniższe dwa przykłady pozwoliłem sobie opisać na subdomenie o nazwie "test.twojadomena.pl".

    Pierwszy przykład - przekierowanie z jednego adresu na drugi w ramach tej samej domeny.

    Kod:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?test\.twojadomena\.pl$ [NC]
    RewriteCond %{REQUEST_URI} ^/adres1/
    RewriteRule (.*) /adres2 [R=301,L]
    
    Domena twojadomena.pl wskazuje na katalog test. Czyli lokalizacje opisane w przykładzie wyglądają następująco:
    Kod:
    public_html/test/adres1/
    public_html/test/adres2/

    Powyższa reguła spowoduje zatem, że cały ruch z adresu: test.twojadomena.pl/adres1
    Zostanie przekierowany na adres: test.twojadomena.pl/adres2

    ---------------------------

    Drugi przykład - również często wywoływany przez naszych użytkowników. Poniższa reguła spowoduje, że cały ruch z requestu: test.twojadomena.pl/adres1, zostanie przekierowany na adres: test.twojadomena.pl/adres1/adres2

    Kod:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?test\.twojadomena\.pl$ [NC]
    RewriteCond %{REQUEST_URI} ^/adres1/
    RewriteCond %{REQUEST_URI} !adres2
    RewriteRule (.*) $1/adres2 [R=301,L]
    Domena twojadomena.pl wskazuje na katalog /test i możemy ją wywołać za pośrednictwem adresu: test.twojadomena.pl. Zatem lokalizacje opisane w przykładzie są następujące: /adres1/adres2/. Idąc od głównego katalogu wygląda to zatem tak:
    Kod:
    public_html/test/adres1/adres2/


    Na dniach postaramy się uporządkować informacje na temat przekierowań oraz mod_rewrite w naszej dokumentacji pomoc.home.pl. Zaktualizujemy wszelkie instrukcje i uzupełnimy je o wiele przykładów (tak jak w powyższym poście).
     

Poleć forum znajomym