Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [htaccess][CSS] przekierowanie na roota przoblem z plikami css
Forum PHP.pl > Forum > Przedszkole
expert
Witam,

z racji, że . htaccess raczkuję założyłem temat w tym dziale.

Potrzebuję zrobić w htaccess takie przekierowanie, że nie zależnie od tego co w wpiszę na pasku adresu, będzie pojawiała mi się strona główna, ale adres będzie zostawał na pasku.

Czyli jeśli wpiszę: http://example.com/uejejdj to zawsze będzie mi się otwierać strona spod adresu http://example.com/ z tym dopisanym 'uejejdj' a na niej za pomocą js będę sobie sprawdzał do której części strony przewinąć ją.

Rzecz w tym, że jak daję:
Kod
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . /index.php [L]

To otwiera mi się strona bez plików css a w konsoli mam taki komunikat:
Cytat
Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://example.com/style.css".

Strona główna działa prawidłowo.

Nie mam bladego pojęcia o co chodzi.

Czy przyczyną może być ze robię to pod https? Ale wszystko odbywa się w tej samej domenie.

Proszę o jakąś podpowiedź.
trzczy
Internet tak działa, że plik css jest żądany przez przeglądarkę osobnym requestem. Zdaje się, że ta reguła .htaccess podmienia index.php w miejsce style.css.

Wykumaj adres do pliku css i wpisz go bezpośrednio do paska adresu przeglądarki i zobacz, czy nie otworzy index.php zamiast style.css
trueblue
Powinieneś raczej przepisywać, to co nie jest plikiem ani katalogiem. A Ty przepisujesz plik i katalog na index.php.
Pewnie dlatego pod css-em masz po prostu plik index.php.

Zamiast takiego przepisania lepiej przekieruj na hash (od razu przeskoczy do danej sekcji). W tej chwili będziesz mieć duplicate content pod każdym wpisanym adresem.
Pyton_000
Jak już to powinno być:

Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
trueblue
Zgadza się. Ma przepisywać to co nie jest plikiem i katalogiem.
expert
Przepraszam za wprowadzenie w błąd - pisałem na szybko w pracy. Już prostuję.

w pliku .htaccess mam tak jak poradziliście, czyli (skopiowane z mojego pliku htaccess):
Kod
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


i jak wprowadzę adres http://example.com/css/style.css to pojawia się zawartość pliku stylu, czli ok.
Jak wprowadzę adres http://example.com/galeria/css/style.css to pojawia się plik index.php, czli tak właściwie prawidłowo.

błąd jest chyba gdzie indziej (może w założeniach).

Mianowicie w kodzie HTML mam
Kod
<base href="http://example.com/">

czyli to powinno definiować podstawową ściezkę wyjściową dla strony, czyli np. http://example.com/css/style.css.
Nie rozumiem tylko, czemu w przypadku strony o adresie http://example.com/galeria/ on za podstawową ściezkę bierze tą z adresu a nie z tagu 'base'?
Czyli zamiast dać http://example.com/css/style.css daje http://example.com/galeria/css/style.css

EDIT:

Jeszcze co zauważyłem, jak daję http://example.com/galeria to strona otwiera sie poprawnie a jak jest już z ukośnikiem na końcu, to otwiera się bez pliku stylu

JESZCZE RAZ EDIT (po chwili i walenie głową w ścianę)

Pisze dla potomnych.
Było w kodzie tak:
Kod
<html>
  <head>
    <link href="" rel="shortcut icon" type="image/x-icon" />
    <link rel="stylesheet" type="text/css" href="./css/style.css">
    <link rel="stylesheet" type="text/css" href="./css/swipebox.css">
    <base href="http://example.com/"> <-------

Ten tag z base powinien byc na samym poczatku zaraz po rozpoczęciu tagu head :-)

Pisałem tyle stron z tym tagiem base i zawsze działa, temu się ździwiłem, ze tym razem coś jest nie tak.

Dla mnie problem rozwiązany, ale i tak dziękuję za fatygę i pomoc.
trueblue
1. Czy http://example.com/ które dodałeś w base nie przekierowuje nigdzie (z http na https)?
2. Czy katalog /galeria istnieje fizycznie?
3. Poszukaj regułki przepisującej adres z "bez slasha" na "ze slashem" lub odwrotnie.
4. Jeszcze raz proponuję Ci - nie rób tak, bo pod każdym adresem będziesz mieć tą samą treść, czyli duplicate content. Lepiej przekieruj wybrane adresy na hashe.
expert
Cytat(trueblue @ 21.11.2017, 18:25:06 ) *
1. Czy http://example.com/ które dodałeś w base nie przekierowuje nigdzie (z http na https)?
2. Czy katalog /galeria istnieje fizycznie?
3. Poszukaj regułki przepisującej adres z "bez slasha" na "ze slashem" lub odwrotnie.
4. Jeszcze raz proponuję Ci - nie rób tak, bo pod każdym adresem będziesz mieć tą samą treść, czyli duplicate content. Lepiej przekieruj wybrane adresy na hashe.


1. Nie nie ma przekierowania
2. Nie istnieje firycznie
3.
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

4. Czy sa jakieś konsekwencje stosowania duplicate content? Co do hasha to faktycznie masz rację i chyba nawet on ułatwia sprawę, bo działa też przy wyłączonym javascript
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.