Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekierowanie podstron 301 z id na bez id
Forum PHP.pl > Forum > Optymalizacja i pozycjonowanie stron - SEO
sphinx
Wita,
potrzebuję pomocy przy napisaniu odpowiednich reguł do przekierowania strony za pomocą 301.

Poniżej użyty obecnie kod:

Kod
RewriteEngine On

RewriteCond %{HTTP_HOST} ^atckaczmarczyk.pl$
RewriteRule ^(.*) [url="http://www.atckaczmarczyk.pl/$1"]http://www.atckaczmarczyk.pl/$1[/url] [QSA,L,R=301]
RewriteRule ^([^.]+)/([^.]+)/$ index.php?page=$1&lang=$2 [L,N]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Potrzebuję dodatkowo do tego dopisać przekierowania podstron poprzez 301 aby Google widział tylko maskowane adresy a stare adresy przekierować w celu przeniesienia siły SEO.

Stary link który chcę przekierować:
Kod
http://www.atckaczmarczyk.pl/index.php?page=czescivw&lang=pl

A to jest nowy link do którego to przekierowania ma prowadzić:
Kod
http://www.atckaczmarczyk.pl/czescivw/pl/


Chodzi o to aby nie istniał taki adres jak

Kod
http://www.atckaczmarczyk.pl/index.php?page=czescivw&lang=pl

Gdy wpiszemy taki stary adres np. ręcznie powinien się automatycznie zmienić na nowy adres
Kod
http://www.atckaczmarczyk.pl/czescivw/pl/


Zgóry dziękuję za pomoc bo już tracę na to siły smile.gif
Pyton_000
Kod
RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&lang=$2 [L,R=301]
sphinx
Hej,
może jest jeszcze coś nie tak, bo dostaję 404.
Wyczyściłem pamięć podręczną. Zawsze zmieniam na 302 aby nie zapamiętywałą przeglądarka sobie już 301 bo wiem że z tym są problemy.

Kod
RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&lang=$2 [L,R=302]


Może jakaś inna sugestia?
Pyton_000
pokaż cały htaccess
sphinx
Ponizej cały kod jaki jest użyty w pliku

Kod
RewriteEngine On

RewriteCond %{HTTP_HOST} ^atckaczmarczyk.pl$
RewriteRule ^(.*) http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]
RewriteRule ^([^.]+)/([^.]+)/$ index.php?page=$1&lang=$2 [L,N]
#RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&lang=$2 [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Turson
RewriteRule ^(.*) http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]
Brakje tutaj $
RewriteRule ^(.*)$ http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]
poza tym, chyba powinno być bez domeny itd, czyli
RewriteRule ^(.*)$ $1 [QSA,L,R=301]
sphinx
Nic z tego - nie działa.
Dodałem jedynie faktycznie znak dolara prze przekierowaniu bez www na z WWW. Więc aktualny kod wygląda następująco:
Kod
RewriteEngine On

RewriteCond %{HTTP_HOST} ^atckaczmarczyk.pl$
RewriteRule ^(.*)$ http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]
RewriteRule ^([^.]+)/([^.]+)/$ index.php?page=$1&lang=$2 [L,N]
#RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&lang=$2 [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Jakieś inne pomysły.
Będę wdzięczny co_jest.gif
trueblue
Które przekierowanie nie działa?

Jeśli chodzi o przepisanie z przekierowaniem, z brzydkiego na ładne, to spróbuj dopisać to:
  1. RewriteCond %{QUERY_STRING} ^page=(.+)&lang=(.+)
  2. RewriteRule ^(.*)$ /%1/%2? [L,R=301]

Przy czym to niekoniecznie musi działać, spotkałem się z przypadkiem, że wpada w pętlę przekierowań.

P.S. Stosuj jednak 301, jeśli chcesz, tak jak piszesz, przenieść siły SEO.
sphinx
Już prawie się udało.

Czyli kod powyżej działa na tyle, że faktycznie otrzymuję linki przyjazdne w postaci http://www.atckaczmarczyk.pl/ofirmie/pl/ a dodatkowo przekierowuje stronę jeżeli wpisuję stare linki w stylu: http://www.atckaczmarczyk.pl/index.php?pag...ivw&lang=pl na link przyjazdny czyli http://www.atckaczmarczyk.pl/czescivw/pl/

Jedyna teraz trudność to taka, że dostaję komunikat o błędzie 404 - strona nie istnieje. Jako adres takiej strony podany jest np. czescivw/pl/

Jakieś sugestie co może być tego przyczyną ?
trueblue
Przy wczytywaniu strony otrzymujesz taki komunikat, czy jakiś element na stronie jest zwracany z takim statusem?
sphinx
Otórz strona główna poprawnie się wyświetlanie. Nie ma żadnych problemów.
Pojawia się on dopiero jak chcę przejść na podstronę.
Jedyne co się wyświetla to jak na obrażku poniżej:
trueblue
I ten .htaccess jest obecnie na stronie?
Jeśli tak, to u mnie strona jest wyświetlana poprawnie.
Pyton_000
U mnie też, istotny jest ostatni / na końcu adresu
sphinx
Aktuwlnie jest wykomentowany.
Poniżej jak wygląda plik htacces teraz:

Kod
RewriteEngine On

RewriteCond %{HTTP_HOST} ^atckaczmarczyk.pl$
RewriteRule ^(.*)$ http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]
RewriteRule ^([^.]+)/([^.]+)/$ index.php?page=$1&lang=$2 [L,N]
#RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&lang=$2 [L,R=302]
    
#RewriteCond %{QUERY_STRING} ^page=(.+)&lang=(.+)
#RewriteRule ^(.*)$ /%1/%2/? [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Zatem kiedy zmieniam kod na taki:
Kod
RewriteEngine On

RewriteCond %{HTTP_HOST} ^atckaczmarczyk.pl$
RewriteRule ^(.*)$ http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]
RewriteCond %{QUERY_STRING} ^page=(.+)&lang=(.+)
RewriteRule ^(.*)$ /%1/%2/? [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Dostaję błąd 404 tylko dla podstron. Strona główna działa poprawnie.
trueblue
Przekierowanie, które wcześniej podał Ci Pyton_000 ma zostać.
Mają być regułki dla ładnych adresów, jaki i to co ja Ci podałem (stąd wspomniałem, że może wpaść w pętlę przekierowań).
sphinx
Trochę się zgubiłem.
Biorąc to do kupy jak powinien wyglądać kod?

W takiej postaci jak poniżej nie działa. Nie doś że jest 404 to i nie przekierowuje starych adresów na nowe maskowane.

Kod
RewriteEngine On

RewriteCond %{HTTP_HOST} ^atckaczmarczyk.pl$
RewriteRule ^(.*)$ http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]
RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&lang=$2 [L,R=302]
RewriteCond %{QUERY_STRING} ^page=(.+)&lang=(.+)
RewriteRule ^(.*)$ /%1/%2? [L,R=302]
trueblue
Spróbuj tak:

Kod
RewriteEngine On

RewriteCond %{HTTP_HOST} ^atckaczmarczyk.pl$
RewriteRule ^(.*)$ http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]

RewriteCond %{REQUEST_URI} ^([^/]*)/([^/]*)$
RewriteRule  ^(.*)$ /index.php?page=%1&lang=%2 [L,R=301]

RewriteCond %{QUERY_STRING} ^page=(.+)&lang=(.+)
RewriteRule ^(.*)$ /%1/%2? [L,R=301]

sphinx
Gubi się strasznie.
Po wpisaniu ręcznie adresu www.atckaczmarczyk.pl zaraz robi przekierowania na taki adres:
http://www.atckaczmarczyk.pl/index.php?pag...;lang=index.php
trueblue
Kod
RewriteEngine On

RewriteCond %{HTTP_HOST} ^atckaczmarczyk.pl$
RewriteRule ^(.*)$ http://www.atckaczmarczyk.pl/$1 [QSA,L,R=301]

RewriteCond %{REQUEST_URI} ^/(.+)/(.+)$
RewriteRule  ^(.*)$ /index.php?page=%1&lang=%2 [L,R=301]

RewriteCond %{QUERY_STRING} ^page=(.+)&lang=(.+)
RewriteRule ^(.*)$ /%1/%2? [L,R=301]
sphinx
Teraz wygląda to tak że strona główna oczywiście się ładuje.
Podstrona dostaje komunikat Nieprawidłowe przekierowanie
Natomiast link w starym stylu: http://www.atckaczmarczyk.pl/index.php?pag...ivw&lang=pl
nie są przepisywane na nowy skrócony wygląd.
trueblue
Sprawdź czy regułki działają niezależnie, czyli wyrzuć najpierw drugi warunek z regułką, potem trzeci z regułą przywracając poprzednie.
sphinx
No nic zamykam temat bo brak odpowiedzi i mnie także się nie udało tego zrobić tak jak potrzeba.
Zrobiłem odpowiednie obejścia aby google nie dostał tych stron pod starymi linkami i final.

Dzięki za wsparcie i chęć pomocy.
trueblue
Czyli nie próbowałeś sprawdzić tego co sugerowałem w powyższym poście?

P.S. Obecnie na stronie nie widać "obejścia".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.