htaccess i przekierowanie CSS z linkiem absolutnym

0

Witam, to mój pierwszy post na tym forum. Proszę o wyrozumiałość. Jestem grafikiem, który dopiero uczy się programowania.
Mój problem:

Mam na komputerze postawiony serwer do developingu/testowania stron www. Przy pomocy MAMP, ale to chyba nieistotne. Co mam wpisać w pliku .htaccess, aby poprawnie przekierowywało pliki CSS do potrzebnego mi w danym momencie folderu?

W ramach testów udało mi się np. podmienić plik style.css na test.css. Strona z ustawionym stylem style.css wygląda zgodnie z tym co mam w test.css, czyli wszystko niby działa.
Obecnie mój plik .htaccess wygląda tak:

RewriteEngine on
RewriteRule ^css/(.*)?$ /Users/username/Sites/sitename/css/test.css [NC,L]

Działa to jednak tylko dla linków relatywnych, gdy CSS na stronie mam podpięte tak:

<link href="css/style.css" rel="stylesheet" type="text/css">

Potrzebuję jednak mieć CSS jako link absolutny:

<link href="/css/style.css" rel="stylesheet" type="text/css">

Wtedy przestaje działać ta podmiana. CSS się w ogóle nie ładuje. Żaden. A w konsoli przeglądarki mam taki błąd:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8888/css/style.css
Jak widać po linku z błędu, przeglądarka szuka pliku w miejscu localhost:8888/css/style.css przez ten absolutny link. Jeśli już, to powinna chyba szukać w localhost:8888/sitename/css/style.css

Pomocy. Nie ogarniam tego.

dodanie znaczników <code class="html"> - fp

0

próbowałeś w .htaccess do tej regułki dodać znak / przed css/(.*) ?

0

Tak. Gdy zmieniłem link do CSS na absolutny:

<link href="/css/style.css" rel="stylesheet" type="text/css">

próbowałem też:

RewriteEngine on
RewriteRule ^/css/(.*)?$ /Users/username/Sites/sitename/css/test.css [NC,L]

Efekt jest ten sam. CSS się w ogóle nie ładuje. W konsoli przeglądarki mam taki błąd:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8888/css/style.css
Czyli wciąż szuka tego pierwszego pliku css tam, gdzie go nie ma. Można się do niego dostać wpisując w przeglądarce localhost:8888/sitename/css/style.css lub file:///Users/username/Sites/sitename/css/style.css

dodanie znaczników `` i <code class="html"> - fp

0

spróbuj może tak
RewriteRule ^/css/(.*)?$ /sitename/css/test.css [NC,L]
lub bez tego / przed css/(.*)

0

Nie działa. Pytanie czy edycja tej drugiej cześci (w której podaję ścieżkę do test.css) jest konieczna? Cały czas pokazuje mi błąd, że nie znaleziono tego pierwszego pliku, czyli style.css. Czy nie trzeba zmienić tylko tego pierwszego wpisu po RewriteRule?

0

Dodam jeszcze, że po zmianie CSS na link absolutny:

<link href="/css/style.css" rel="stylesheet" type="text/css">

próbowałem też w .htaccess taki kod:

RewriteEngine on
RewriteRule . /Users/username/Sites/sitename/css/test.css [NC,L]

Ta kropka po RewriteRule powinna, jeśli dobrze rozumiem, przekierować każde zapytanie do pliku test.css. I tak się dzieje. Pokazuje się on wtedy jako tekst w oknie przeglądarki. Wydaje się to potwierdzać, że link do test.css jest wpisany prawidłowo. Co więc wpisać zamiast ^/css/(.*)?$ ?

dodanie znacznika <code class="html"> - fp

0

u mnie działa takie coś RewriteRule ^css/(.*)?$ css/style.css [NC,L]

0

U mnie też, ale tylko gdy CSS jest zapisany na stronie jako link relatywny:

<link href="css/style.css" rel="stylesheet" type="text/css">

Jeśli zmieniam na link absolutny:

<link href="/css/style.css" rel="stylesheet" type="text/css">

to przestaje działać prawidłowo ten zapis z .htaccess. Ponownie mam błąd:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8888/css/style.css

dodanie znaczników <code class="html"> - fp

0

Sprawdziłem jeszcze jedną rzecz. Skopiowałem folder CSS do /Users/username/Sites/, który to folder jest głównym katalogiem na http://localhost:8888/
Przy deklaracji CSS jako link absoltny plik CSS się teraz wczytał, ale wciąż nie działa to przekierowanie.

Być może błędnie rozumiem działanie .htaccess. Czy skoro strona http://localhost:8888/sitename/index.php odwołuje się do pliku CSS z adresu http://localhost:8888/css/style.css, to który plik .htaccess odpowiada za jego przekierowanie? Ten z folderu http://localhost:8888/sitename/ czy z folderu http://localhost:8888/css/

0

Być może źle się do tego zabrałem i niepotrzebnie trochę skomplikowałem sytuację. To co chcę osiągnąć, to takie skonfigurowanie lokalnego serwera, żebym mógł testować na swoim komputerze strony www, nad którymi pracuję. Problem polega na tym, że moje pliki css są w katalogu localhost:8888/sitename/css/style.css i kiedy deklaruję je na stronie jako /css/style.css, przeglądarka szuka ich w localhost:8888/css/style.css. Co jest logiczne, ale niepożądane, bo tych plików tam nie ma.

Znalazłem całkiem proste, ale nie idealne rozwiązanie. W preferencjach MAMP, w zakładce Apache zmieniłem Document Root na /Users/username/Sites/sitename, aby ten folder był głównym, kiedy wpisuję localhost:8888/ w przeglądarce. Wtedy CSS z absolutnym URI działa, jest poprawnie wyświetlany.

Ale… Czy jest inne rozwiązanie? Czy mogę osiągnąć ten sam efekt korzystając z pliku .htaccess, abym mógł zostawić w preferencjach MAMP Document Root ustawione na /Users/username/Sites/, czyli z wszystkimi moimi stronami? Jak przekierować dla konkretnej strony localhost:8888/ na localhost:8888/sitename/ korzystając z .htaccess? Szukałem w internecie, próbowałem kilku sposobów. Bez skutku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1