Skocz do zawartości

mod rewrite


Rekomendowane odpowiedzi

Chcę użyć takiego stylu linków na stronie:

www.domain.pl/parametr1/parametr2/parametr3/

Ale w tym przypadku przeglądarka traktuje to jako fizyczne katalogi i z zmienia lokalizcje do plików, obrazków, styli itp

W kodzie html ścieżka do pliku zapisana jest tak:

src="image/obrazek.jpg"

Ale po otwarciu strony (o takim linku jaki chce użyć) odwołanie do pliku wygląda tak:

parametr1/parametr2/parametr3/image/obrazek.jpg

Czy jest na to jakaś rada? z wyjątkiem przepisania odwołania do plików na taki:

src="/image/obrazek.jpg"

.

Odnośnik do komentarza
Udostępnij na innych stronach

Problem nie dotyczy tylko jednego katalogu ale wszystkich odwolań do jakichkolwiek plików.

Czyli:

href="styl.css"

src="obrazek.jpg"

href="strona.html"

I całej reszty plików, ktorych nawet nie pamietam do końca. A mogą to byc flashe ktore w dodatku ładują inne pliki (filmy obrazki) lub skrypty JS ktore też korzystają z innych plików itp.

.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Ja to sobie robię tak... działa bez zmian zarówno na localu jak i na serwerze

np. w pliku z klasą Strona mam taki konstruktor

function Strona()
{
$this->host = $_SERVER['HTTP_HOST'];

if ($this->host == "localhost")
	$this->host = "https://".$this->host."/~stronka/www";
else if ($this->host == "88.156.189.82")
	$this->host = "https://".$this->host."/~stronka/www";
else
	$this->host = "https://".$this->host;
}

i potem np.

 <a href="<? echo $this->host; ?>/strona.html">link</a>

albo

<a href="<? echo $strona->getHost(); ?>/strona.html">link</a>

Wychodzi na to samo co dał Kaviorek z tym, że wyczytałem gdzieś tam, że nie powinno się znacznika base stosować :D no i Jego wersja nie zadziała na localu bez zmiany :) Nie wiem jak to z Flashem wyjdzie, nie znam się na nim ;)

Mi takie rozwiązanie działa i w zupełności wystarcza. można dać jeszcze else if'a dla 127.0.0.1 w razie potrzeby

Odnośnik do komentarza
Udostępnij na innych stronach

Za pomoca <base> można częściowo rozwiazać ten problem. Linki w sekcji <body> bedą już poprawne, ale linki w sekcji <head> już nie (czyli linki do styli, js, rss itp)

Jeżeli buduje się serwis od podstaw z taką konstrkcją linków to myśle ze nie ma większego problemu, we wszystkich kolejnych dodawanych modulach do strony trzeba po prostu pamiętać o znaku "/" na poczatku linku.

Ale jeżeli przerabia się juz istniejący serwis to mogą wyleźć niespodzianki. W moim przypadku był to serwis w ktorym dużo jest filmów odpalanych przez playerka flash. Playerek korzysta z plików xml jak i rowniez z danych z bazy. I przejście na tego typu linki pociągalo za sobą przeróbke playerka, przerobke plików js ktore odpalają playerka, potem modyfikacje panelu admina, aby odpowiednio były zapisywane linki, modyfikacje plików xml, potem modifikacje nawet w cachowaniu strony.

W konsekwecji zostałem przy konstrukcji linków bez znaku "/" w środku linku. I niczego nie trzeba przerabiać :) Z wyjątkiem małej modyfikacji podobnej klasy jak podał garyoldman

.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...
Za pomoca <base> można częściowo rozwiazać ten problem. Linki w sekcji <body> bedą już poprawne, ale linki w sekcji <head> już nie (czyli linki do styli, js, rss itp)

Linki w sekcji <head> będą także poprawne o ile ten tag <base> dasz wcześniej niż deklarację styli, js itp. ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności