Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Podstrony w Zend Framework nie działają
Forum PHP.pl > Forum > Przedszkole
qdlaty88
Witam,

buduję sobie stronę w oparciu o zend framework ale natrafiłem na pewien irytujący problem. Mianowicie linki do podstron w menu działają mi tylko i wyłącznie wtedy gdy projekt załaduję bezpośrednio z index.php przez wpisanie pełnej ścieżki dostępu do tego pliku w przeglądarce: 'http://localhost/Projects/Template/public/index.php' podczas gdy powinno wystarczyć: 'http://localhost/Projects/Template/public/'.

Po wpisaniu: 'http://localhost/Projects/Template/public/' strona główna projektu wyświetla się prawidłowo (layout + zawartość z widoku index) ale próba przejścia do podstrony daje w przeglądarce Page not found.

Problemem nie jest kod. Uruchamiałem u siebie ostatnio sklep internetowy napisany przez znajomego i też miałem ten sam problem, podczas gdy moje aplikacje działają u niego jak należy. Coś jest nie tak z moimi ustawieniami serwera apache - ale co?
qdlaty88
Cytat(Turson @ 16.10.2013, 22:03:12 ) *


Też już tak próbowałem. Przeglądarka wyświetla layout a w części zarezerwowanej na treść Page not found.

Żeby to działało dobrze to strona główna (layout + treść z index.phtml) to:http://localhost/Projects/Template/public - tak jest i tak jest dobrze.
A podstrony: http://localhost/Projects/Template/public/index/podstrona - tak powinno działać ale nie działa.

Nie chcę, żeby w adresie url było widać: http://localhost/Projects/Template/public/...index/podstrona tylko tak jak powyżej.

Najgorsze jest to, że już kiedyś się z tym problemem spotkałem i udało mi się go rozwiązać bo te wadliwe ścieżki nie dotyczą tylko podstron ale też dołączonych plików css czy grafik. Za nic nie jestem sobie w stanie przypomnieć co wtedy zrobiłem, że zadziałało.
buliq
Czy ustawiłeś projekt tak, aby działał z podkatalogu?
qdlaty88
Trochę edytowałem plik .htaccess z katalogu public ale ostatecznie wróciłem do jego pierwszej wersji bo nic się nie zmieniło (albo działało gorzej). Tak wygląda:

  1. RewriteEngine On
  2. # The following rule tells Apache that if the requested filename
  3. # exists, simply serve it.
  4. RewriteCond %{REQUEST_FILENAME} -s [OR]
  5. RewriteCond %{REQUEST_FILENAME} -l [OR]
  6. RewriteCond %{REQUEST_FILENAME} -d
  7. RewriteRule ^.*$ - [NC,L]
  8. # The following rewrites all other queries to index.php. The
  9. # condition ensures that if you are using Apache aliases to do
  10. # mass virtual hosting, the base path will be prepended to
  11. # allow proper resolution of the index.php file; it will work
  12. # in non-aliased environments as well, providing a safe, one-size
  13. # fits all solution.
  14. RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::$
  15. RewriteRule ^(.*)$ - [E=BASE:%1]
  16. RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]


W sieci udało mi się znaleźć przykład, który działa tak jak chcę, żeby działały moje projekty. Adres url w przeglądarce podczas przechodzenia do podstrony powinien się zmieniać własnie tak jak w przykładzie poniżej:

http://torus.uck.pk.edu.pl/~danusia/temat01/public/

Jest to przykład z wykładu do którego link poniżej:

http://torus.uck.pk.edu.pl/~danusia/hipert...lic/index/cnext

Zbudowałem sobie nowy projekt z identycznym kodem jak w linku powyżej (pomijając bazowe url) a i tak nie działa jak powinno.

EDIT: 31.10.2013

Nadal nie udało mi się znaleźć rozwiązania dla mojego problemu. W sieci wyczytałem jednak, że jeśli /nazwaprojektu/public/index.php/controller/action działa a /nazwaprojektu/public/controller/action nie to problem leży w tym, że nie działa mod_rewrite. Idąc tym tropem (zgodnie z tutkami dostępnymi w sieci) odszukałem (chyba) wszystkie pliki konfiguracyjne i poustawiałem to jak należy (AllowOverride też) - aplikacja działa jak działała...

W error.log apacha dostaję:
Kod
[Thu Oct 31 14:56:11.912746 2013] [negotiation:error] [pid 7835] [client 127.0.0.1:47231] AH00687: Negotiation: discovered file(s) matching request: /var/www/Projects/MatchBoxCamera/public/index (None could be negotiated)., referer: http://localhost/Projects/MatchBoxCamera/public/


Nie wiem już gdzie mam szukać źródła problemu. Będę wdzięczny za każdą podpowiedź czy pomysł co mógłbym jeszcze sprawdzić :/
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.