Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][CSS]mod_rewrite + css
-Gość-
post
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
wookieb
post
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
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
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
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
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
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.
Go to the top of the page
+Quote Post
-Gość-
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
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ę.
Go to the top of the page
+Quote Post
-Gość-
post
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
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
Go to the top of the page
+Quote Post
Lars
post
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ł (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Lars 10.09.2008, 15:28:48
Go to the top of the page
+Quote Post
-Gość-
post
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
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).
Go to the top of the page
+Quote Post
Maxik
post
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.
Go to the top of the page
+Quote Post
-Gość-
post
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
Post #17





Goście







Nikt nie pomoze?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.09.2025 - 21:30