Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][CSS]mod_rewrite + css
-Gość-
post 10.09.2008, 00:29:10
Post #1





Goście







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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
wookieb
post 10.09.2008, 06:33:00
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


--------------------
Go to the top of the page
+Quote Post
vokiel
post 10.09.2008, 08:26:38
Post #3





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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 to the top of the page
+Quote Post
-Gość-
post 10.09.2008, 08:36:40
Post #4





Goście







Poradziłem sobie w ten sposób, że dodaję linki pełne, z http.

A czy jest może jakieś inne rozwiązanie?
Go to the top of the page
+Quote Post
-Gość-
post 10.09.2008, 10:36:46
Post #5





Goście







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
Go to the top of the page
+Quote Post
vokiel
post 10.09.2008, 13:09:13
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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;


--------------------
Go to the top of the page
+Quote Post
erix
post 10.09.2008, 13:32:07
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
-Gość-
post 10.09.2008, 13:37:52
Post #8





Goście







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
Go to the top of the page
+Quote Post
erix
post 10.09.2008, 13:55:23
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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ę.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
-Gość-
post 10.09.2008, 15:20:52
Post #10





Goście







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.
Go to the top of the page
+Quote Post
Maxik
post 10.09.2008, 15:26:31
Post #11





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cały czas to powtarzam: <base href="adres strony"> w sekcji head


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
Lars
post 10.09.2008, 15:27:34
Post #12





Grupa: Zarejestrowani
Postów: 279
Pomógł: 15
Dołączył: 29.04.2005
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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

Ten post edytował Lars 10.09.2008, 15:28:48


--------------------
(\.../) This is Bunny. Copy and paste bunny into
(O.o) your signature to help him gain world domination.
(> <) Zanim zapytasz | Też się przyda | Pomogłem ci? Kliknij "Pomógł"
Go to the top of the page
+Quote Post
-Gość-
post 10.09.2008, 15:35:31
Post #13





Goście







@Lars, @Maxik, dzięki. Nie znałem tego sposobu a wcześniej nigdy nie używałem mod_rewrite.
Go to the top of the page
+Quote Post
erix
post 10.09.2008, 16:01:36
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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).


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Maxik
post 10.09.2008, 16:19:20
Post #15





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


erix, chodzi Ci o <a href="obrazek.jpg">obrazek</a>? Jeśli tak to nigdy nie miałem problemu ze ścieżkami względnymi.


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
-Gość-
post 12.09.2008, 17:13:37
Post #16





Goście







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 to the top of the page
+Quote Post
-Gość-
post 12.09.2008, 22:35:40
Post #17





Goście







Nikt nie pomoze?smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:13