/ / Zend Framework - nie traktuj katalogu / public / jako kontrolera - zend-framework

Zend Framework - nie traktuj katalogu / public / jako kontrolera - zend-framework

Czy można żądać katalogu przez http w katalogu Zend / public / bez tego, że jest on traktowany jako kontroler?

Np. Mam katalog, / public / facebook /, który zawiera dane aplikacji na Facebooku, ale Zend jest (jako domyślne oczekiwane zachowanie), co powoduje błąd "brak kontrolera facebooka", gdy zażądam http://mysite.com/facebook.

Odpowiedzi:

0 dla odpowiedzi № 1

Dzieje się tak dlatego, że domyślne RewriteRules dostarczone z Zend przekierowują wszystkie żądania do Zend Framework Bootstrapper (index.php).

Najlepszą rzeczą do zrobienia, IMHO, jest dodaniewyjątek od tej reguły. Jest więcej niż jeden sposób na to, możesz użyć RewriteCond (i na przykład omijać ogólne przekierowanie do istniejącego katalogu lub plików w / public), ale możesz też filtrować go w wyrażeniu RewriteRule. przykład z wyjątkiem w RewritreRule, więc withoutt RewriteCond:

RewriteRule !(public/facebook/(.*.php))|(public/(.*.pdf))|(externalauthent.php)|(favicon.ico)|(images/(.*.(ico|gif|jpg|png|bmp|JPG|JPEG|BMP|GIF|PNG)))|(css/(.*.css))|(js/(.*.*))$ /index.php [L]

0 dla odpowiedzi nr 2

Jeśli masz zawartość w tym adresie URL, ZF nie próbuje znaleźć kontrolera na Facebooku, musisz dodać do tego folderu folder o nazwie facebook i plik index.php


0 dla odpowiedzi № 3

Ta praca dla mnie:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}  !^/public_directory_name
RewriteRule ^.*$ index.php [NC,L]

Wystarczy zastąpić "public_directory_name" nazwą katalogu, którego Zend nie powinien traktować jako kontrolera.

W odpowiedzi na inne pytanie: htaccess - nie przepisuj w tym przypadku