Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z rewrite
Forum PHP.pl > Forum > Przedszkole
sexigrzes
Witam

Mam problem z rewrite....

Mam stronę która działa na tej zasadzie http://adres.pl/index.php?page=przykladowastrona
pobiera page i includuje wartość


Próbuje tak:
Kod
RewriteRule ^(.*)$ index.php?page=$1 [NC]


Nie wczytuje mi css (i innych w head) i także nie includuje mi strony


Próbując tak:
Kod
RewriteRule ^(.*)$ index.php?page=przykladowastrona [NC]

Tym razem wczytało mi stronę ale nie wczytało nadal CSS'a

Szukałem i ktoś gdzieś napisał że można dać / przed wczytywaniem css, ale jesli nawet by wczytalo akrusz troche to karkołomne dodawać wszystkie strony do .htaccess

Czy mógłby ktoś pomóc? Z góry dziękuje.
sexigrzes
Nie mogę sobie ztym poradzić... ;/ jest napisane jak rozwiazac problem z css'em ale nie chce mi ladowac strony...

Strone mam opartą na czyms takim:

  1. <?php
  2.  
  3. if(!isset($page))
  4. {
  5. $page = 'news';
  6. }
  7. else
  8. {
  9. $invalide = array('/','/\/',':','.');
  10. $page = str_replace($invalide,' ',$page);
  11.  
  12. if(!file_exists($page.".php"))
  13. {
  14. $page = "main";
  15. }
  16. else
  17. {
  18. $page = $_GET['page'];
  19. }
  20. }
  21. include($page.".php");
  22. ?>




Takie cos mi nie dziala:

RewriteRule ^page/(.*)$ index.php?page=$1 [NC]
erix
Ech, a jaki URL? To cały htaccess?
sexigrzes
po za RewriteEngine On to cały... z tego co tam napisano (w obu poradnikach) to powinno juz mi zamienić adresy, ale jakiś problem jest... i nie bardzo wiem jak skonstruować te linki żeby działało

RewriteRule ^page/(.*)$ index.php?page=$1 [NC]

w/w wpis powinien mi zamienic http://strona.pl/index.php?page=dzial
na
http://strona.pl/page/dzial/

a jednak nie działa ;/


EDIT;

bawiąc się dalej doszedłem do tego że musi być ta końcówka .html

RewriteEngine On

RewriteRule ^(.+).html$ index.php?page=$1



Teraz zadziałało... a wie ktoś jak zlikwidować te .html? bo przestalo działaś jak usunąłem to normalnie w tekście. Nie ładuje wtedy css i strony
erix
Cytat
Teraz zadziałało... a wie ktoś jak zlikwidować te .html?

To znaczy?

Cytat
Nie ładuje wtedy css i strony

Wtedy, czyli kiedy? Mówisz o zbyt wielu ogólnikach, o wiele za mało o konkretach.
sexigrzes
Sory za takie pisanie, ale chcac to jakos ogarnac sam sie gubię we wszystkim

Wcześniej próbowałem zrobić te linki od razu wykluczając końcówkę .html. tzn. zeby link wyglądał: http://strona.pl/podstrona/ tak mi nie działało

Kod
RewriteEngine On
RewriteRule ^(.+)$ index.php?page=$1



I teraz z tego co zauważyłem to:
http://strona.pl/podstrona/ - nie ładuje podstrony i css
http://strona.pl/podstrona - ładuje css ale nie ładuje podstrony

Gdy zmienie .htaccess na (dodaje tylko końcówkę .html):
Kod
RewriteEngine On
RewriteRule ^(.+).html$ index.php?page=$1


i wywołam:

http://strona.pl/podstrona.html

to działa

I teraz moje pytanie, jak pozbyć się .html aby działało przy adresach:
http://strona.pl/podstrona
http://strona.pl/podstrona/


EDIT:

Bawiąc się dalej zrobiłęm taki .htaccass:
Kod
RewriteEngine On
RewriteRule ^([a-zA-Z]+)$ index.php?page=$1
RewriteRule ^([a-zA-Z]+)/$ index.php?page=$1


Wywołuje:
http://strona.pl/podstrona - działa

próbuje: http://strona.pl/podstrona/

nie ładuje tylko css


I teraz moje pytanie:
czy da się to jakoś rozwiazac w .htaccess? tzn. jakos inaczej zrobic te wyrazenie regularne? czy trzeba skorzystac z tego artykulu ktory dales mi w pierwszym poscie?

Pozdrawiam
Ulysess
hmm ja na swojej stronie też chciałbym zrobić przyjazne linki dlatego z tego co Ty próbojesz skopiowałem:
  1. RewriteEngine On
  2. RewriteRule ^(.+).html$ index.php?page=$1

wchodząc np na http://localhost/mod_rewrite/test2&a=1&b=2.html

otwiera mnie plik test2 z zmiennymi GET a i b smile.gif

wprowadzając:

http://localhost/mod_rewrite/

otwiera mnie strone główna

w czym Ty widzisz problem ?snitch.gif
erix
Cytat
I teraz z tego co zauważyłem to:
http://strona.pl/podstrona/ - nie ładuje podstrony i css
http://strona.pl/podstrona - ładuje css ale nie ładuje podstrony

Nie czytałeś tego, do czego zalinkowałem.
sexigrzes
Czytałem czytałem, już mi ładnie działa smile.gif

Jeszcze tylko nie wiem jak wyciągnąć $_GET z linku przy bardziej "skomplikowanych" linkach

Jak zlikwidować te "id="

Tzn.
Żeby mi pobrał _GET:
Kod
$zapytanie =  $pdo -> query('SELECT * FROM dzialy WHERE id = "'.$_GET['id'].'"');


Musi byc id=$1:
Kod
RewriteRule ^dzial/id=([^-]+)$ index.php?page=dzial&pokaz=art&id=$1 [QSA]


Link jest taki: http://localhost/strona/dzial/id=22

A jeżeli chcialbym taki link: http://localhost/strona/dzial/22

To jak teraz te id (22) oznaczyć żeby GET w zapytaniu SQL wiedział że o te get chodzi?

erix
Nie masz znaku zapytania w URL, więc sprawa jest oczywista.
sexigrzes
Tzn. nie wiem czemu ale działa mi ten link http://localhost/strona/dzial/22 tylko zastanawia mnie skad $_GET['id'] w zapytaniu SQL wie że ten numerek 22 to jest wlasnie ten $_GET['id'] skoro nigdzie tego nie oznaczylem... Pytam tylko dlatego, bo boje sie ze przy paru getach w jednym linku moze sie posypac to

--------------------------------------------------------------------------------------------------------------------------------------
Mój .htaccess wyglada tak:
Kod
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 [L]  
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?page=$1 [L]
RewriteRule ^dzial/([^-]+)$ index.php?page=dzial&pokaz=art&id=$1 [QSA]


Czy jest on w miarę poprawny?
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.