Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: htaccess RewriteRule a adresowania względne
Forum PHP.pl > Forum > PHP
compsoft
Witam...
Temat przekierowania RewriteRule tysiące razy był komentowany na forach świata, niestety nie mogę znaleźć pomocy dotyczącej adresowania względnego po przekierowaniou. W czym rzecz? Może pokażę to na przykładzie. Posiadam
1: plik index.php:
  1. <?php
  2. <html>
  3. <head>
  4. <link href='css/style.css' rel='stylesheet'>
  5. </head>
  6. <body>
  7. <h1>test css</h1>
  8. <span class='text_1'>czerwony tekst</span><br><br>
  9. </body>
  10. </html>");

2: plik .htaccess:
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteRule ^jakis_parametr/?$ index.php
  4.  

3: plik style.css w podkatalogu css/:
  1. h1 {
  2. font-family: Verdana, Arial, Helvetica;
  3. font-size: 18px;
  4. font-style: normal;
  5. line-height: normal;
  6. font-weight: bold;
  7. font-variant: normal;
  8. text-transform: none;
  9. color: #444444;
  10. }
  11. .text_1 {
  12. color: #FF0000;
  13. font-family: Verdana, Arial, Helvetica;
  14. font-size: 12px;
  15. font-weight: bold;
  16. }

Gdzie problem?
Jeśli wykonam zapytanie bez slasha końcowego wszystko wygląda ok: (zobacz przykład 1)
natomiast jeśli powyższy adres zamknę slashem, plik css nie jest czytany (zobacz przykład 2)
Wygląda na to, że adres względny do pliku style.css jest w drugim przykładzie nieprawidłowy! Gdzie w .htaccess robię błąd?
nospor
NIe: css/style.css
a: /css/style.css
a najlepiej: http://twojacudnastrona.pl/css/style.css
compsoft
Cytat(nospor @ 28.01.2017, 23:00:21 ) *
NIe: css/style.css
a: /css/style.css

Sorki, ale po dodaniu początkowego slasha w obudwu przypadkach plik style.css nie jest czytany.
nospor
a najlepiej?
compsoft
Cytat(nospor @ 28.01.2017, 23:00:21 ) *
NIe: css/style.css
a: /css/style.css
a najlepiej: http://twojacudnastrona.pl/css/style.css

Przy zastosowaniu adresowania bezwzględnego wszystko działa OK, ale to nie rozwiązuje problemu, bo w przypadku każdego include musiał bym pełną ścieżkę podawać.
nospor
ps: no i ustaw w swojej regule css by dotyczyla tylko sytuacji gdy plik nie istnieje wink.gif
trueblue
W pierwszym przypadku ostatni fragment adresu jest traktowany właśnie jako parametr, w drugi jako kolejne zagłębienie ścieżki.

Jeśli chcesz aby niezależnie od tego czy użytkownik wpisał slash lub nie, poszukaj reguły, która doda lub usunie tenże.
Jeśli chcesz aby w drugim przypadku css był poprawnie czytany, dodaj w html tag <base>.
compsoft
Cytat(compsoft @ 28.01.2017, 23:16:34 ) *
Przy zastosowaniu adresowania bezwzględnego wszystko działa OK, ale to nie rozwiązuje problemu, bo w przypadku każdego include musiał bym pełną ścieżkę podawać.

Tu się pomyliłem. Nawet gdy plik style.css nie jest prawidłowo adresowany, polecenie include nie wymaga pełnego adresowania i działa poprawnie bez podania pełnej ścieżki do includowanego pliku.


Cytat(trueblue @ 28.01.2017, 23:18:05 ) *
Jeśli chcesz aby w drugim przypadku css był poprawnie czytany, dodaj w html tag <base>.

Dzięki, tag <base> rozwiązał mój problem.
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.