Skocz do zawartości

Problem ze ścieżkami


Piczer

Rekomendowane odpowiedzi

Chcę dołączyć plik main.css więc piszę w kodzie html tak:

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

Wszystko ładnie ładuje, ale jak wpiszę w adresie:

http: //localhost/(...)/public_html/index.php/test

to wtedy nie załadowuje ścieżki. Spróbowałem stworzyć sobie helpera:

function includeStylesheets()
{
    $files = func_get_args();
    foreach ( $files as $file )
    {
        echo '<link rel="stylesheet" type="text/css" href="' .PUBPATH. 'css' .SLASH.$file. '.css" />';
    }
}

Wcześniej oczywiście zdefiniowano z poziomu innego katalogu jednak na tym samym poziomie:

define( "SLASH", DIRECTORY_SEPARATOR );
define( "PUBPATH", realpath(dirname(__FILE__).SLASH. ".." .SLASH. "public_html" ) .SLASH );

Też nie pomaga.

Odnośnik do komentarza
Udostępnij na innych stronach

Że nie ładuje CSSa. Zapomniałem o .htaccess, bezmyślnie zerżnięty z symfony (no prawie):

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  #RewriteBase /
  
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /public_html/ [L]

  # we skip all files with .something
  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php?uri=$1 [QSA,L]
  
</IfModule>

Odnośnik do komentarza
Udostępnij na innych stronach

Generalnie to .htaccess dla mnie powinien wyglądać tak:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?uri=$1 [L,NC]
</IfModule>

I nie ma problemu jeśli pliki CSS są umieszczone na poziomie http://localhost/, ewentualnie w podkatalogu, prawda, to wtedy tylko /suburl/file.css.

 

EDIT

W sumie bez różnicy, bo rewrite nie reaguje na pliki, tylko na "abstrakcyjne" katalogi/pliki.

Odnośnik do komentarza
Udostępnij na innych stronach

Tylko ten rewrite nie działa gdy wpiszę index.php/test tylko samo /test.

CSS ciągle nie działa.

Ścieżki ./css/main.css nie chwyta, bo szuka go w katalogu /test/css/ zamiast /css, bo dałem /test po index.php, ale tak ma być, dlatego spróbowałem bezwzględnej dlatego nie wiem czemu nie działa:

PUBPATH -> D:\Serwer\www\(...)\public_html\

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobiłem prosty test, odpaliłem ścieżkę http://localhost/dir/a/b/c, pliku index.php w http://localhost/dir/

<link rel="stylesheet" href="/dir/sub/file.css" type="text/css" />

<div id="test">
<?php var_dump( $_GET ); ?>
</div>

http://localhost/dir/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?uri=$1 [L,NC]
</IfModule>

http://localhost/dir/sub/file.css

#test
{
    background:#f00;
}

Działa.

 

A czy index.php ma się pojawiać w URLu to sprawa kosmetyczna. Mi osobiście przeszkadza.

Odnośnik do komentarza
Udostępnij na innych stronach

Aaa... Kapnąłem się, że ./ i / to nie to samo... Masz pomysł jak to zrobić, żeby nie trzeba było podawać podkatalogu w tej ścieżce (albo automatycznie za pomocą helpera w PHP)? A ten index.php chciałem żeby był bo w symfony dzięki temu można korzystać z wielu aplikacji podając tutaj plik rozruchowy, chociaż mój htaccess i tak nie spełniał swojego zadania chyba.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
http: //localhost/(...)/public_html/index.php/test

index.php jest katalogiem?

 

Nie, tak można parametry przekazywać przy rewrite ;)

Proponuję skonfigurować vhost na jakąś zmyśloną domenę (nie zapomnij dodać jej w hosts). Ot np. ja u siebie mam http://gm.clan ;)

 

Edit:

C:\Windows\System32\Drivers\etc\hosts
127.0.0.1 mojawlasna.domena

 

(...)/apache/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName mojawlasna.domena
    DocumentRoot "D:/wamp/www/folder"
</VirtualHost>

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Szybciej chyba byłoby po $_SERVER['PATH_INFO'] wrzucać zmienne do geta. Aczkolwiek .htaccess pewnie też to załatwi, tylko akurat z wyrażeń regularnych to ja jestem słaby -_-

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

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

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