Skocz do zawartości

mod-rewrite


Mar

Rekomendowane odpowiedzi

Witam, w końcu zabrałem się za to cudo techniki, wszystko fajnie działa, ale gdy już coś chcę zminić tak nie bardzo. Mam cos taakiego:

RewriteRule ^haslo-([0-9]+)\.html$ index.php?a=haslo&id=$1

i link postaci:

haslo-'.$haslo->id .'.html

i teraz wprowadzam zmianę na:

haslo-'.$haslo->id .'-'.$haslo->haslo .'.html

i teraz pytanie, jak zmodyfikować formułę mod-rewrite.

I jeszcze dodatkowe pytanie, czy jeśli wprowadzę mod-rewrite, to w zindeksowanym serwisie pojawią mi się podwójne adresy, więc pewnie grozi duplicate connet, więc chyba cos zrobic, by odindeksować stare adresy, dobrze kombinuję?

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

haslo-'.$haslo->id .'-'.$haslo->haslo .'.html

i teraz pytanie, jak zmodyfikować formułę mod-rewrite.

tak

RewriteRule ^haslo-([0-9]+)-(.*)\.html$ index.php?a=haslo&id=$1 [L]

... więc pewnie grozi duplicate connet, więc chyba cos zrobic, by odindeksować stare adresy, dobrze kombinuję?

wstaw dodatkowo

RewriteRule ^haslo-([0-9]+)\.html$ / [R=301, L]

powinno zadzialac 301 na glowną.

Jesli nie - to trzeba bedzie to w PHP rozwiązać

Inną metodą jest wpisanie tych starych stron do robots.txt jako Disallow i zgloszenie do automatu w celu wyindeksowania.

Szczegóły wyindeksowania w przyklejonym topiku w dziale Google.

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję Erbit, działa jak należy, sukerując się tym postanowiłem iść dalej, i zrobic to także dla adresu:

index.php?a=lit&lit=c

więc wykombinowałem cos takiego:

RewriteRule ^litera,(.*)\.html$ index.php?a=lit&lit=$1 [L]

by adres był postaci: litera,c.html

EDIT: zadziałało, widocznie serwer potrzebował trochę czasu :)

tylko, pojawił się nowy problem, ponieważ, mam podział na strony. Więc, muszę mieć, też adres:

index.php?a=lit&lit=m&strona=30

czyli teraz do tego mam dać nową formułę, czy zmienic poprzednią?

wymysliłem coś takiego:

^litera,(.*),([0-9]*)\.html$ index.php?a=lit&lit=$1&strona=$2 [L]

ale to chyba dobre nie jest :|

I niestety tak nie bardzo. I jeszcze jedno, jeśli miałem spację zamieniam ją na "," i zaminiam także polskie znaki, w poprzedniej formule zamiast "-" postanowiłem uzywć również ",".

EDIT2:

RewriteRule ^haslo-([0-9]+)\.html$ / [R=301, L]

to zacina mi serwer, wywala 403

EDIT3:

Dobra, poddaję się, po całym dniu doszedłem do jednego wniosku, że ma to być tak:

DirectoryIndex index.php

Options FollowSymLinks
RewriteEngine On
RewriteRule ^index.html$ index.php
RewriteRule ^ksiega,gosci.html$ komentarze.php
RewriteRule ^dodaj.html$ dodaj.php
RewriteRule ^litera,(.*),(.*).html$ index.php?a=lit&lit=$1&strona=$2 [L]
RewriteRule ^ksiega,gosci,(.*).html$ komentarze.php?strona=$1
RewriteRule ^(.*),([0-9]+)\.html$ index.php?a=haslo&id=$2 [L]
RewriteRule ^litera,(.*)\.html$ index.php?a=lit&lit=$1 [L]

Tylko jestes problem, dwie reguły się gryzą tz:

RewriteRule ^litera,(.*),(.*).html$ index.php?a=lit&lit=$1&strona=$2 [L]

i

RewriteRule ^(.*),([0-9]+)\.html$ index.php?a=haslo&id=$2 [L]

się gryzie, ponieważ

adres: ../litera,a.html działa

adres: ../slowo,13.html działa

adres: ../litera,a,30.html nie działa, wyświetla się zawartość strony jak ..slowo/30.html

Ale jak to naprawić nie mam pojecia, proszę o pomoc.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

RewriteRule ^(.*),([0-9]+)\.html$ index.php?a=haslo&id=$2 [L]
RewriteRule ^litera,(.*)\.html$ index.php?a=lit&lit=$1 [L]

te dwie zamień kolejnością - tak aby :

^(.*),[0-9]+)...

była ostatnią regułą

wymysliłem coś takiego:

^litera,(.*),([0-9]*)\.html$ index.php?a=lit&lit=$1&strona=$2 [L]

to mogło by wyglądać tak:

^litera,([a-z]),([0-9]*)\.html$ index.php?a=lit&lit=$1&strona=$2 [L]

bądź jesli mają tez byc duze litery to:

^litera,([a-zA-Z]),([0-9]*)\.html$ index.php?a=lit&lit=$1&strona=$2 [L]

staraj sie nie stosować ogólników (.*) - raczej stosuj dokładne określenie... Popatrz tu -> https://www.cms.rk.edu.pl/art_51.html zapewne znajdziesz pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Super, wielkie dzięki. Wszystko działa jak należy. Ale dalej mnie zastanawia, czemu jak wrzucę tą regulę do przekierowania, serwer się sypie.. i generuje stronę error 500.

No, ale tym się będę martwił z biegiem czasu, choć już trzeba zacząć myśleś... by wyindeksować stare podstrony.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

Pytałem administratora i otrzymałem odpowiedz, że żle skonfigurowany jest ten plik.

oto ten kod:

RewriteRule ^([0-9]+)\.html$ / [R=301, L]

.. i pewnie porzeba takich kilka, dla każdego adresu.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

No teraz działa, wygląda to teraz w całości tak:

DirectoryIndex index.php

Options FollowSymLinks
RewriteEngine On
RewriteRule ^([0-9]+)\.html$ https://www.mojastrona.pl/ [R=301,L]
RewriteRule ^index.html$ index.php
RewriteRule ^ksiega,gosci.html$ komentarze.php
RewriteRule ^dodaj.html$ dodaj.php
RewriteRule ^litera,([a-zA-Z]),([0-9]*)\.html$ index.php?a=lit&lit=$1&strona=$2 [L]
RewriteRule ^ksiega,gosci,(.*).html$ komentarze.php?strona=$1
RewriteRule ^litera,(.*)\.html$ index.php?a=lit&lit=$1 [L]
RewriteRule ^(.*),([0-9]+)\.html$ index.php?a=haslo&id=$2 [L]

Jeszcze cos pwoinienem zminić, czy już jest OK?

.. i mniemam, że to przekierowanie 301 przenosi na nowe adresy, więc pytanie, czy to mozna jakoś sprawdzić, czy to działa poprawnie?

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

No niestety nie nie działa. Stare adresy nadal funkcjonują, jak wyglądają adresy zobacz w moim poprzednim poście, albo przybliże to tak.

index.php?id=817 działa, nie przekierowywuje,

index.php?a=lit&lit=s działa nie przekierowywuje,

.. i myślałem, że da się tak zrobic za pomocą mod-rewrite, że po wejściu na te adresy przekieruje na nowe adresy. Ty piszesz, że powinno przekierować chociaż na stronę główną, ale to też nie działa.

EDIT: Logicznie, na mój rozum powinno być coś takiego:

RewriteRule ^index.php?a=lit&lit=($zmienna) https://www.mojastrona.pl/litera,($zmienna) [R=301,L]

... ale nie mam pojecia jak to poprawnie napisać dla każdego adresu...

Dziekuję Ci za pomoc, już bardzo dużo mi pomogłeś, masz u mnie piwo :), ale mam nadzieje, że dojdziemy do rowiązania problemu. ;)

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Stare adresy czyli te w PHP.

Nie jest mozliwe aby to zrobic w htaccess. Muszisz wykonać to już w PHP

Popatrz na przykład i pobaw się...

if (substr($_SERVER['REQUEST_URI'],-5,5) !== '.html') {
if ($_GET['a']) {
	header("HTTP/1.1 301 Moved Permanently");
	header("location:https://www.domena.pl/dzial-".$_GET['a'].".html"); 
	exit; 
}
}

Odnośnik do komentarza
Udostępnij na innych stronach

Erbit jesteś wielki, teraz działa jak należy. Sprawę, mozna uznać za zamknietą. Uff, ale się zmeczyłem. Dało mi to nieźle popalić...

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności