Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przyjazny adres URL Mod_rewrite .htaccess
Forum PHP.pl > Forum > PHP
aleks365
Witam

Mam problem z Mod_rewrite

Przypisałem to i prawie wszystko jest ok

Mam to przypisane tak
www.strona.pl/news/34 < id newsa

i wszystko działa jeśli chodzi o Mod_rewrite tylko problem w tym że nie czyta mi grafiki plików javascript i css

Mój kod .htaccess
Kod
Options FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteRule ^news/([^-]+)/$ index.php?readmore=$1 [L]


chciał bym wykorzystać regule RewriteCand chyba że macie coś lepszego

Proszę o pomoc jaką regułę mam dopisać czy zmienić
Z góry dzięki


Wykluczam dodanie ../ przed adresem do css i grafiki
denis94
jeżeli masz taka możliwość to najprostszym rozwiązaniem będzie zastosowanie ścieżek bezwzględnych do wszelkiej grafiki, stylów css czy skryptów js
aleks365
No też prawda ale ja jestem człowiekiem wymagającym i dokładnym to wolał bym inne rozwiązanie

ps zastosuje ../ jak nie będę mial wyboru
Barcelona
Przy NiceUrl musisz do css zastosować ścieżki bezwzględne, ja to zrobiłem na zasadzie zmiennej
  1. $adres = "http://www.adres.pl/";
  2. echo '<link rel="stylesheet" type="text/css" href="'.$adres.'style.css" media="screen,projection" />';


Co do grafik, oraz innych plików musisz dać /, nie jest wymagany pełen adres.
Sam niedawno przechodziłem przez NiceUrl, więc wiem że jest to trochę wk****e. Tak samo zacząłem od mod_rewrite, jednak szybko zmieniłem metodę na wygodniejszy kod php. Polecam Ci przeczytanie tutka nospor'a pod tym adresem http://nospor.pl/ladne-urle.html.
Będziesz miał o wiele wygodniejszy system kodowania linków, oraz nie będziesz się musiał bawić z .htaccess
wujek2009
W sekcji head dodaj tag "base href" z odnośnikiem do Twojej strony - rozwiąże to Twój problem.
  1. <base href="http://www.adres.pl/" />
aleks365
Wielkie dzięki zobacze co się uda mi zrobić
Uriziel01
A po co tak kombinowac skoro można po prostu usunąć z tej reguły wszelkie istniejące pliki lub/i katalogi, ewentualnie pliki o danym rozszerzeniu.
Na przykład:
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. RewriteCond %{REQUEST_URI} !^(\.ico|\.jpg|\.gif|\.js|\.png) [NC]
nospor
@Uriziel01 ano dlatego, że stosując tylko to co napisałeś, wchodząc na adres:
http://mojastrona.pl/ladny/url
i mając tam np. coś takiego:
<img src="images/plik.jpg" />
to sorki, ale pliku nie znajdzie bo nie istnieje coś takiego jak
http://mojastrona.pl/ladny/url/images/plik.jpg
Ale za to istnieje:
http://mojastrona.pl/images/plik.jpg
smile.gif

Ja jestem zwolennikiem pełnych ścieżek dla obrazków, plików js czy css
Uriziel01
No i właśnie dlatego też:
  1. RewriteCond %{REQUEST_URI} !^(\.ico|\.jpg|\.gif|\.js|\.png) [NC]


smile.gif
aleks365
Cytat(nospor @ 27.02.2012, 14:47:20 ) *
Ja jestem zwolennikiem pełnych ścieżek dla obrazków, plików js czy css


Też jestem za bo to proste wink.gif
nospor
@Uriziel01 jeden z nas czegoś nie kuma. Być może to jestem ja. Co robi dokładnie ta linijka:
RewriteCond %{REQUEST_URI} !^(\.ico|\.jpg|\.gif|\.js|\.png) [NC]
?
Uriziel01
Ok to może najbardziej skompresowana możliwa wersja smile.gif Specjalnie dla Ciebie:
Kod .htaccess:
Kod
RewriteEngine on
RewriteCond $1 !\.(gif|jpe?g|png|ico|css|js)$
RewriteRule ^(.*)$ test.php [L,QSA]


kod pliku test.php:
  1. <?PHP
  2. echo '<img src="test.jpg">';
  3. ?>


No i jaki kolwiek plik test.jpg wink.gif Mamy i przekierowanie wszelkich zapytań na pliczek test.php ale także zachowujemy prawidłowe działanie grafiki, arkuszy stylu oraz skryptów js. Jeżeli się w czymś mylę to mnie oczywiście popraw bo zdaje sobie sprawę że jesteś pewnie bardziej doświadczony ode mnie. Pozdrawiam serdecznie.
p.s0piszę tutaj a nie na PW gdyż dla samego autora tematu też może się to w jakiś sposób przydać.
nospor
No ale jak to ma sie do problemu? No nijak.

Dla strony: http://mojastrona.pl/ladny/url
plik test.jpg nie istnieje gdyż plik test.jpg znajduje się w katalogu głównym, a dla strony http://mojastrona.pl/ladny/url plik test.jpg szukany jest w http://mojastrona.pl/ladny/url/test.jpg
Uriziel01
Moja kupa [czyt. mea culpa]. Niestety nie przeczytałem dalszych postów w temacie a z samego postu autora zrozumiałem że problem polega na tym że przepisaniu ulagają wszystkie zapytania, łącznie z tymi do plików statycznych. Oczywiście powinieneś stosować ścieżki bezwzględne, co przy użyciu odpowiedniego reg exp'a można załątwić w przeciągu sekund. Dzięki @nospor jak zwykle za naprostowanie mojej skrzywionej logiki wink.gif
aleks365
Dzięki wam widzę że dużo sugesti macie ja jestem za podanie adresu do css itp bo używać będę np takich adresów (kategoria/pojazdy/audi)

Serdecznie pozdrawiam i dzięki za szybka odpowiedz wink.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.