Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nowe ID kategori i .htaccess
Forum PHP.pl > Forum > Serwery WWW > Apache
bezkitu
Witam.
Męczę się z tym już dobrą chwilę i cały czas nie chce zadziałać.

Mianowicie. Mam stronę gdzie adres wygląda następująco:
www.xxx.pl/nazwa-kategorii-c-123_456_789.html

123 - id głównej kategorii. 456 - podkategorii 789-podpod kategorii

Muszę zmienić teraz id tej pod pod kategori na np. 999 czyli nowy adres wygląda:
www.xxx.pl/nazwa-kategorii-c-123_456_999.html

i ok, tylko stary link jest calkiem dobrze spozycjonowany i nie chciał bym tego psuć dlatego chciałbym przekierować . Wydawało mi się, że nic prostszego, napisałem regułę
  1. RewriteRule ^nazwa-kategorii-c-123_456_789.html$ nazwa-kategorii-c-123_456_999.html [R=301,L]


ale niestety niedziała sad.gif

jakieś pomysły?

Dodam tylko, że jest to oscommerce i ma zainstalowane seo urls i niewiem czy w związku z tym można przekierować, przekierowany adres? Powyższe polecenie nie działa bez względu czy dam go na początku htaccess czy na końcu.
vokiel
A czy Twoja reguła w ogóle coś przepisuje?
Coś bardziej takiego powinno być.
Kod
RewriteRule ^(nazwa-kategorii-c+)-([0-9]+)_([0-9]+)_([0-9]+).html/?$ index.php?id_gl=$2&podkategoria=$3&podpodkategoria=$4 [L]
bezkitu
No wydaje mi się że przepisuje. To może być nawet na twardo jak zwykłe przekierowanie 301 czyli np:

CODE
RewriteCond % ^xxx.pl/nazwa-kategorii-c-123_456_999.html$
RewriteCond % ^www.xxx.pl/nazwa-kategorii-c-123_456_999.html$
RewriteRule ^(.*)$ http://www.xxx.pl/nazwa-kategorii-c-123_456_789.html/$1 [R=301,L]


i nie wiem czemu ale nie chce mi to działać
erix
[APACHE] pobierz, plaintext
  1. RewriteCond %
[APACHE] pobierz, plaintext

Co to ma być? Nie ma tu przecież żadnej zmiennej do testowania.
bezkitu
No dobra to, że jest źle to juz zdążyłem się przekonać smile.gif. Interesuje mnie jak jest poprawnie więc jeśli ktoś potrafi mi pomóc był bym bardzo wdzięczny.
bezkitu
Przeczytałem ten artykuł w obie strony już dużo wcześniej i dalej nie mogę znaleźć odpowiedzi na moje pytanie. Jeśli nie chcesz mi udzielić odpowiedzi wprost to może chociaż podaj paragraf w którym mam jej szukać?

Może inaczej.. pokaże swój tok myślenia i powiedz mi gdzie popełniam błąd

mam juz plik .htaccess który działa i sprawnie obsługuje seo urls, więc dopisuje nowa linijkę

RewriteRule (wiadomo) ^ (dowolny początek) nazwa-kategori-c-1\.html (stary adres) nazwa-kategori-c-2\.html (nowy adres) [R=301,L] (flagi) co nam daje:

RewriteRule ^nazwa-kategori-c-1\.html nazwa-kategori-c-2\.html [R=301,L]

i gdzie jest błąd i jak powinno to wygladac dobrze
erix
Pokazałem, czego błąd dotyczy - nie podajesz zmiennej do testowania przy RewriteCond.

Zobacz sobie w dokumentacji, jak wygląda konstrukcja RewriteCond.
bezkitu
Ok, po dłuższej chwili przemyśleń doszedłem do tej wersji:

RewriteCond %{HTTP_HOST} ^nazwa-kategorii-c-123_456_789$
RewriteRule ^(.*)$ http://www.xxx.pl/nazwa-kategorii-c-123_456_999$1 [R=301,L]

jednak dalej nie działa.. może jeszcze jakieś podpowiedzi? smile.gif
erix
Nie działa, to znaczy co się dzieje?
bezkitu
przekierowuje mnie na główna co sie dzieje zawsze gdy sie wpisze niewlasciwy adres (po zmianie ID niema juz kategori 789 wiec niema tez takiego adresu, dzieje sie tak niezależnie czy regułę dopisuje na poczatku przed innymi czy na koncu
erix
Ale HTTP_HOST nigdy nie będzie się równał czemuś takiemu. winksmiley.jpg

Jak to odpalasz? Na localhost?
bezkitu
na home.pl
erix
No to nigdy to nie zadziała, gdyż HTTP_HOST zawiera domenę serwera, na którym jest uruchamiany skrypt.
bezkitu
czyli co niemożliwe? niechce mi sie wierzyć, że nie można przekierowac pojedyńczego adresu wewnatrz strony na inny
Gapollo
A gdyby tak
RewriteCond %{REQUEST_URI} ^nazwa-kategorii-c-123_456_789$
bezkitu
coś się ruszyło, chociaż dalej nie jest ok smile.gif teraz zostałem przekierowany na stronę

http: // www.xxx.pl/nazwa-kategori-123-456-999.htmlindex.php?language=pl&cPath=123_456_789

rozumiem, że pewnie gryzie się z jakąś inna regułą ehh ..
Gapollo
To może o $1 w tej regule jest za dużo?
bezkitu
bez $1 nie dziala (przenosi na strone główna) a z samym $ dzieje się praktycznie to samo ehh a wydawalo sie że bedzie takie proste smile.gif
Gapollo
Teraz to już strzelam, ale reguła wydaje się prosta:
RewriteCond %{REQUEST_URI} ^nazwa-kategorii-c-123_456_789$
RewriteRule ^(.*)$ http://www.xxx.pl/nazwa-kategorii-c-123_456_999.html?$1[R=301,L]

a może
RewriteCond %{REQUEST_URI} ^nazwa-kategorii-c-123_456_789$
RewriteRule ^(.*)$ http://www.xxx.pl/nazwa-kategorii-c-123_456_999.html [R=301,L]

Kurcze, jak zapisujesz url jako tekst a nie link?
bezkitu
DZIAŁA smile.gif

zadziałała wersja z samym "?" bez $ .. niewiem czemu tak szczerze mówiąc i jest to dość ciekawe ale działa smile.gif

RewriteCond %{REQUEST_URI} ^nazwa-kategorii-c-123_456_789$
RewriteRule ^(.*)$ http://www.xxx.pl/nazwa-kategorii-c-123_456_999.html? [R=301,L]

dzięki bardzo!

ps. poprostu robie spacje po http: // www
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.