Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Wiele kontrolerów
Forum PHP.pl > Forum > PHP > Frameworki
qdlaty88
Witam! Chciałbym prosić Was o pomoc lub wskazówkę w rozwiązaniu niniejszego problemu:

Zbudowałem aplikację przeznaczoną dla 3 użytkowników (3 layouty i 3 kontrolery). Cała aplikacje działa bez zarzutu pod warunkiem, że odpalam ją bezpośrednio z linku: http://localhost/mojprojekt/public/index.php.

W zależności od typu użytkownika adresy url poszczególnych akcji wyglądają wtedy tak:
http://localhost/mojprojekt/public/index.php/controller/akcja.

Jakoś bardzo mi to nie przeszkadza, ale o ile dobrze się orientuję powinno to działać bez index.php w adresie url. Tym bardziej, że jak wystartuję aplikację z http://localhost/mojprojekt/public
to mam dostęp do wszystkich akcji controllera index (http://localhost/mojprojekt/public/index/action) ale próba przejścia do akcji innego controllera kończy się błędem 404 i logiem na serwerze:
  1. [Mon Nov 11 21:42:37 2013] [error] [client 127.0.0.1] File does not exist: /var/www/MatchBoxCamera/public/user, referer: <a href="http://localhost/MatchBoxCamera/public/" target="_blank">http://localhost/MatchBoxCamera/public/</a>


Wszystkie kontrolery czy akcje tworzyłem zf toolem, struktura katalogów jest podręcznikowa i te pliki tam są. Jak macie Państwo pomysł jak to rozwiązać lub gdzie szukać przyczyny proszę pisać. Będę wdzięczny za każdą sugestię wink.gif
crafter
a masz włączony mod_rewrite itp?
qdlaty88
Cytat(crafter @ 12.11.2013, 09:22:14 ) *
a masz włączony mod_rewrite itp?


Tak. Ustawiłem go podczas instalacji zenda a gdy pojawił się problem z urlami to właśnie to sprawdzałem jako pierwsze ale dla pewności możesz zajrzeć w te ustawienia:

w konsoli:
Cytat
marcin@marcin-desktop:~$ cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
marcin@marcin-desktop:~$ sudo a2enmod rewrite
[sudo] password for marcin:
Module rewrite already enabled
marcin@marcin-desktop:~$ ls -al /etc/apache2/mods-enabled/rewrite.load
lrwxrwxrwx 1 root root 30 lis 11 22:15 /etc/apache2/mods-enabled/rewrite.load -> ../mods-available/rewrite.load


/etc/apache2/sites-available/default
Cytat
<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>


i .htaccess z katalogu public aplikacji:
Cytat
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
freemp3
Dla swojej strony w Options usuń MultiViews.
qdlaty88
Cytat(freemp3 @ 12.11.2013, 12:33:05 ) *
Dla swojej strony w Options usuń MultiViews.


Jeśli chodzi Ci o opcje w /etc/apache2/sites-available/default to jedynym efektem jest wtedy to, że do akcji z kontrolera index też nie da się wejść bez index.php w adresie url.

Nie robiłem virtualhosta dla tej aplikacji.
freemp3
Chodziło mi o ten wpis:
Kod
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Spróbuj usunąć w ogóle Options i sprawdź co się będzie działo.
Dodaj też RewriteBase do pliku .htaccess.
qdlaty88
Kod
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>

Działa tak jak opisałem w poprzednim poście.

Cytat
Spróbuj usunąć w ogóle Options i sprawdź co się będzie działo.

Dostaję info:
Kod
You don't have permission to access / on this server.

i tak aż do katalogu public aplikacji gdzie działa tylko akcja index kontrolera index i nic poza tym (chyba, że jest index.php w url).

Cytat
Dodaj też RewriteBase do pliku .htaccess.

Kod
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

RewriteBase /var/www/MatchBoxCamera/public

i nadal to samo co wcześniej.

Pytanie brzmi czy da się to ustawić tak, żeby nie było 'index.php' w adresie url?

Dzięki za zainteresowanie problemem wink.gif
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.