Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kłopot ze ścieżkami
Forum PHP.pl > Forum > Przedszkole
szczemp
Robię taką małą stronkę i dopóki robiłem ją lokalnie wszystko było dobrze.
Lokalnie na xamppie mam zrobiony wirtualny host - projekt, a w konfigu (config/config.php) mam zdefiniowaną stałą TEMPLATE ze ścieżką do katalogu z templatem - /template. I jeszcze plik .htaccess między innymi z takimi wpisami:
ErrorDocument 403 /error.php?e=403
ErrorDocument 404 /error.php?e=404
Coś z tym wszystkim jest nie tak, bo jak wysłałem na serwer w nazwa.pl to mi się posypało.
Lokalnie w przeglądarkę wpisywałem takie adresy:
http://projekt - strona główna, jest ok
http://projekt/ala - nieistniejący katalog, jest ok, otwiera stronę /error.php?e=404
http://projekt/ala/ala - nieistniejący katalog w nieistniejącym katalogu, też jest ok jak wyżej
http://projekt/js - istniejący katalog, jest ok, otwiera stronę /error.php?e=403
http://projekt/js/ala - nieistniejący katalog w istniejącym katalogu, jest ok, otwiera stronę /error.php?e=404

Jak wysłałem na nazwa.pl to z taką wartością stałej TEMPLATE strona wcale się nie otwiera.
Jak zmienię jej wartość z /template na template to:
http://jakas.subdomena.pl - strona główna, jest ok
http://jakas.subdomena.pl/ala - nieistniejący katalog, jest ok, otwiera stronę /error.php?e=404
http://jakas.subdomena.pl/ala/ala - nieistniejący katalog w nieistniejącym katalogu, otwiera stronę /error.php?e=404 ale bez cssów i obrazków
http://jakas.subdomena.pl/js - istniejący katalog, otwiera stronę /error.php?e=403 ale bez cssów i obrazków
http://jakas.subdomena.pl/js/ala - nieistniejący katalog w istniejącym katalogu, otwiera stronę /error.php?e=404 ale bez cssów i obrazków
http://projekt - strona główna, jest ok
http://projekt/ala - nieistniejący katalog, jest ok, otwiera stronę /error.php?e=404
http://projekt/ala/ala - nieistniejący katalog w nieistniejącym katalogu, otwiera stronę /error.php?e=404 ale bez cssów i obrazków
http://projekt/js - istniejący katalog, otwiera stronę /error.php?e=403 ale bez cssów i obrazków
http://projekt/js/ala - nieistniejący katalog w istniejącym katalogu, otwiera stronę /error.php?e=404 ale bez cssów i obrazków

Drzewo katalogów jest takie:
.htaccess
index.php
error.php
config/config.php
templates/css
templates/img
w templates są jeszcze inne pliki php odpowiedzialne z wygląd strony
index.php i error.php ładują plik config tak samo (require_once 'config/config.php') i w nich używana jest stała TEMPLATE
Ktoś kiedyś miał do czynienia z takim problemem i wie jak go rozwiązać, żeby raz ustawić stałą TEMPLATE i ładowało mi to co trzeba niezależnie od serwera?
Wkrótce stronę trzeba będzie uruchomic na innym serwerze i chcę zminimalizować szansę, że coś nie będzie grało.
!*!
Pokaż .htaccess poza tym jeśli wszytko idzie na index.php łącznie z subdomeną, to ścieżka do CSS powinna być "/costamn/plik.css"
szczemp
htaccess jest taki
  1. RewriteEngine On
  2. RewriteRule ^page,([0-9]+)$ /index.php/?strona=$1
  3. RewriteRule ^page,([0-9]+),([0-9]+)$ /index.php/?strona=$1&porcja=$2
  4. RewriteRule ^page,([a-zA-Z0-9]+)?$ /index.php
  5. RewriteRule ^page([a-zA-Z0-9]+)?$ /index.php
  6.  
  7. RewriteRule ^news,([0-9]+)$ /index.php/?news=$1
  8. RewriteRule ^news,([a-zA-Z0-9]+)?$ /index.php
  9. RewriteRule ^news([a-zA-Z0-9]+)?$ /index.php
  10.  
  11. RewriteRule ^gallery,([0-9]+)$ /index.php/?galeria=$1
  12. RewriteRule ^gallery,([a-zA-Z0-9]+)?$ /index.php
  13. RewriteRule ^gallery([a-zA-Z0-9]+)?$ /index.php
  14.  
  15. RewriteRule ^druk,([a-z0-9,]+)$ /index.php/?druk=$1
  16. RewriteRule ^druk,([a-zA-Z0-9]+)?$ /index.php
  17. RewriteRule ^druk([a-zA-Z0-9]+)?$ /index.php
  18.  
  19. Options -Indexes
  20. ErrorDocument 403 /error.php?e=403
  21. ErrorDocument 404 /error.php?e=404

wszystko idzie na index.php a błędy 404 i 403 na error.php

Ścieżka do css w index.php i error.php jest generowana na podstawie stałej TEMPLATE (TEMPLATE. '/css/arkusz.css'). Dlatego na początku dałem jej wartość zaczynającą się od '/', żeby ścieżka wyglądała tak: /template/css/arkusz.css. Ale to działa tylko lokalnie. Na nazwa.pl taka wartość nić nie wyświetla. Być może coś jest skopane gdzie indziej. W index.php w zależności od geta ładuję różne pliki. Np jeśli index.php rozpozna że w gecie jest galeria to ładuje plik który pobiera z bazy galerię, z kolei ten ładuje plik TEMPLATE. 'wygladGalerii.php'.
Czekajcie, coś mi zaświtało.
!*!
Zapomniałeś zdeklarować base
Kod
RewriteBase /
szczemp
Naprawiłem!
Ze stałej na jej początku wywaliłem '/' i w paru miejscach gdzie używałem np
  1. TEMPLATE. '/css/arkusz.css'
zamieniłem na
  1. '/'. TEMPLATE. '/css/arkusz.css'

Na razie działa tak jak chcę. Zobaczymy jak potestują testerzy.
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.