Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][CSS]mod_rewrite + css
Forum PHP.pl > Forum > Przedszkole
Gość
Mam problem.

Korzystam z mod_rewrite:
  1. RewriteRule ^([^/]*)/$ index.php?module=$1 [L]


Link powiedzmy, index.php?module=Contact zamiania ładnie na Contact.

W sekcji <head> w pliku /w katalogu templates/ mam odnośniki do plików CSS, /css/

Problem polega jednak na tym, że w momencie kiedy korzystam z mod_rewrite style nie są wykrywane.

Jak mogę to poprawić?

Pozdrawiam
wookieb
Daj nad tą regułą rewriteCond któy sprawdza rozszerzenia odwoływanych requestów i przepuszcza tylko wybrane.
Jezeli rozszerzenie jest ok to wywołuje plik
Dodaj w ten regule na końcu flagę [L]. Co oznacza, że jeżeli podana reguła jest ok to nie wykonają się wzsystki dalsze.
vokiel
Kod
# czasami trzeba ustawic sciezke bazową
RewriteBase /www/
#umożliwia odwolanie sie do plikow ktore faktycznie istnieja, nazwa i lokalizacja sa poprawne
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Gość
Poradziłem sobie w ten sposób, że dodaję linki pełne, z http.

A czy jest może jakieś inne rozwiązanie?
Gość
Trochę pogrzebałem i znalazłem pasujące mi rozwiązanie;

RewriteRule ^article/(.+)/([0-9]+)/$ index.php?module=read&title=$1&id=$2

Teraz tylko pytanie: czy muszę wszystkie ścieżki na stronie /css, formularze, php/ zmienić na pełny format?

Czyli w css'ie zmieniać ścieżki do obrazków z ../images/layout/grafika.gif na http://domena.com/images/layout/grafika.gif ?

Pzdr
vokiel
Jeśli masz stronę główną, w której includujesz wszystko, czli taki index.php, który jest zawsze otwarty, i w nim są dołączane podstrony to wystarczy, że w nim dołączysz plik css, który będzie w tym samym katalogu co index.php, a wszystkie grafiki w zagłębionym, wtedy ścieżki względne powinny działać:
- index.php
- style.css
- +/images
- tlo.jpg
- corner.jpg

a w css normalnie:
Kod
background: transparent url(images/tlo.jpg) repeat-x top left;
erix
Cytat
Daj nad tą regułą rewriteCond któy sprawdza rozszerzenia odwoływanych requestów i przepuszcza tylko wybrane.
Jezeli rozszerzenie jest ok to wywołuje plik


A co jeśli zdarzy się sytuacja, w której będzie "/sdfa/sdf/asdf/asdf/sadf/"? Wtedy na nic Ci się to nie zda chyba, że będziesz ścieżkę zwracał via Rewrite. Choć nieciekawie to może się skończyć dla transferu, bo przeglądarka za każdym razem będzie ściągała arkusz/skrypt/grafikę od nowa.

Cytat
A czy jest może jakieś inne rozwiązanie?


Osobiście przyjąłem, że przy korzystaniu z przepisywania adresów stosuję adresy bezwzględne zaczynające się od "/" (czyli od katalogu głównego (sub)domeny)). Oczywiście, nie muszę chyba wspominać o RewriteCond sprawdzający istnienie plików w odpowiednim miejscu.
Gość
Cytat(vokiel @ 10.09.2008, 13:09:13 ) *
Jeśli masz stronę główną, w której includujesz wszystko, czli taki index.php, który jest zawsze otwarty, i w nim są dołączane podstrony to wystarczy, że w nim dołączysz plik css, który będzie w tym samym katalogu co index.php, a wszystkie grafiki w zagłębionym, wtedy ścieżki względne powinny działać:

U mnie sytuacja jest troszeczkę inna sytuacja. Mam index.php, w którym includowane są pliki poszczególnym elementów witryny, a w prawej kolumnie, includuję moduły smile.gif

Cytat(erix @ 10.09.2008, 13:32:07 ) *
A co jeśli zdarzy się sytuacja, w której będzie "/sdfa/sdf/asdf/asdf/sadf/"? Wtedy na nic Ci się to nie zda chyba, że będziesz ścieżkę zwracał via Rewrite. Choć nieciekawie to może się skończyć dla transferu, bo przeglądarka za każdym razem będzie ściągała arkusz/skrypt/grafikę od nowa.
Osobiście przyjąłem, że przy korzystaniu z przepisywania adresów stosuję adresy bezwzględne zaczynające się od "/" (czyli od katalogu głównego (sub)domeny)). Oczywiście, nie muszę chyba wspominać o RewriteCond sprawdzający istnienie plików w odpowiednim miejscu.

Właśnie jeśli chodzi o RewriteCond to mam problem. Nie wiem jak to ugryźć, mógłbyś dać mi jakąś sugestię?

Pzdr
erix
Cytat
U mnie sytuacja jest troszeczkę inna sytuacja. Mam index.php, w którym includowane są pliki poszczególnym elementów witryny, a w prawej kolumnie, includuję moduły

A co to ma do rzeczy? Możesz moduły sobie generować nawet eval" title="Zobacz w manualu PHP" target="_manualem (;P); najważniejsze, co przeglądarka widzi.

Cytat
Właśnie jeśli chodzi o RewriteCond to mam problem. Nie wiem jak to ugryźć, mógłbyś dać mi jakąś sugestię?

~Vokiel już napisał, jakie to są warunki; poczytaj trochę.
Gość
Czytałem, próbowałem, kombinowałem.

Treść pliku .htaccess
  1. <?php
  2. Options FollowSymLinks
  3. RewriteEngine On
  4.  
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteRule ^bands/$ index.php?module=bands [L]
  8. ?>



Wchodzę poprzez adres http://domena.com/bands/

No i nie ma css, ani javascriptu. Plik index.php jest w katalogu głównym, plik main.css w katalogu css/

Linkowanie stylu poprzez /css i css nic nie daje.
Maxik
Cały czas to powtarzam: <base href="adres strony"> w sekcji head
Lars
I po co te wszystkie kombinacje, toż to dość popularny problem:
  1. <base href="adreswww">


[edit]: ha, ktoś mnie wyprzedził tongue.gif

Pozdrawiam smile.gif
Gość
@Lars, @Maxik, dzięki. Nie znałem tego sposobu a wcześniej nigdy nie używałem mod_rewrite.
erix
Cytat
Cały czas to powtarzam: <base href="adres strony"> w sekcji head

Ale potem zapomnij o odwołaniach względnych. Kiedyś też korzystałem z <base />, ale zrezygnowałem z właśnie tego powodu (czasem użycie ścieżki względnej się przydaje).
Maxik
erix, chodzi Ci o <a href="obrazek.jpg">obrazek</a>? Jeśli tak to nigdy nie miałem problemu ze ścieżkami względnymi.
Gość
Cytat(erix @ 10.09.2008, 16:01:36 ) *
Ale potem zapomnij o odwołaniach względnych. Kiedyś też korzystałem z <base />, ale zrezygnowałem z właśnie tego powodu (czasem użycie ścieżki względnej się przydaje).

No zauważyłem. Mam podstronę na której wywołuję zawartośc dynamicznie za pomocą Ajaxa, podana ścieżka to modules/page.php. O dziwo, w FF wszystko działa, pod IE także (6 + 7) ale pod Operą już nie. Pomogło dopiero dodanie pełnej ścieżki, http://domena.com/sciezka/modules/page.php

JAk mógłbym ewentualnie to naprawić jeszcze, żeby nie musieć korzystać z <base>?
Gość
Nikt nie pomoze?smile.gif
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.