mod_rewrite a pliki incudowane

mod_rewrite a pliki incudowane
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Witam, w innym temacie dostałem podpowiedź, by zastosować mod_rewrite w celu zmiany adresu z index.php?strona=kontakt na /kontakt/

Poczytałem trochę w tym temacie i mam 2 pytania:

  1. Mod rewrite działa na zasadzie, że nie zmieni sam wyglądu, tylko jeśli mam kod:

<a href="index.php?strona=kontakt>Kontakt</a>

to on wyświetli właśnie taki link a nie ten przerobiony tak ?

  1. struktura na serwerze wygląda następująco: public_html/ oraz public_html/include/ plik index.php znajduje się w głównym katalogu a ładowane pliki do treści są w katalogu include. W katalogu z index.php jest plik .htaccess z takim warunkiem:
Kopiuj
    RewriteEngine On
    RewriteRule ^/(.*)/$ /?strona=$1 [NC]

ale gdy wpisuję w przeglądarkę strona.pl/kontakt/ to to nie działa.

Próbowałem również w pliku .htaccess wpisywać:

Kopiuj
    RewriteRule ^/(.*)/$ /index.php?strona=$1 [NC]
    oraz
    RewriteEngine On
    RewriteRule ^/([a-zA-Z]+)/$ /index.php?strona=$1 [NC]

ale żadne z tych nie działa, co robię źle ?

Właśnie udało mi się "uruchomić" stronę dzięki:

RewriteRule ^(.*)$ index.php?strona=$1

i jak wpisuję www.strona.pl/kontakt/ to niby otwiera, problem w tym, że zamiast kontaktu otwiera mi stronę główną, a cały css czy skrypty, które są w katalogach styles i scripts nie są ładowane.
Jakiś pomysł ?
Pozdrawiam!

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Linki w <a> sam sobie musisz zmienić, mod_rewrite nie modyfikuje Ci outputu.

RewriteRule ^/(.*)/$ /?strona=$1 [NC] -- wywal slash na początku.

Style nie są ładowane, bo wpisując w przeglądarkę "/kontakt/" sugerujesz przeglądarce, że "jesteś" w folderze kontakt, i linkujesz do cssów pewnie relatywnie, czyli tak src="css/style.css", czyli szuka Ci styli w "/kontakt/css/style.css". Linkuj relatywnie do korzenia strony, np: src="/css/style.css"

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Dzięki piękne za odpowiedź :)

Co do styli, to tak mam poustawiane, może dokładniej:

struktura na serwie:
public_html, public_html/include, public_html/css, public_html/script.

W głównym katalogu jest plik index.php a w nim np odnośnik do css/style.css
Jak otwieram stronę poprzez /kontakt/ to nie widzi w ogóle css-a, zresztą nie widzi żadnych połączeń, ani skryptu, ani no flasha który jest w tym samym katalogu co index.php

@Edit, dobra, już sobie poradziłem, wszędzie trzeba dopisać ../ przed linkiem :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.