Zend Framework с phpBB: проблема с URL - PullRequest
1 голос
/ 02 ноября 2009

Я использую Zend Framework с Apache Sever на Ubuntu. Когда я пробую свой сайт на localhost, я использую следующий URL

например:

http://test.dev/authentication/login
http://test.dev/student/profile

Где «аутентификация» относится к AuthenticationController, а «логин» относится к loginAction. «student» относится к StudentController, а «profile» относится к profileAction.

Вопрос: Теперь я хочу использовать форум phpBB с моим сайтом. Мне пришлось использовать следующий URL для запуска форума phpBB с моим сайтом.

http://localhost/test/forum/

Где 'test' - это каталог моего основного проекта (сайта). Я хочу использовать следующий URL для форума phpBB.

http://test.dev/forum/

Как настроить мой проект для открытия форума phpBB, используя указанный выше URL? Должен ли я создать контроллер?

Спасибо

Ответы [ 3 ]

2 голосов
/ 02 ноября 2009

Я полагаю, вы используете apache mod_rewrite с вашим приложением ZF.

Самое простое решение - поместить новый файл .htaccess в каталог forum / и отключить механизм перезаписи

RewriteEngine Off 

Это работает, потому что Apache сначала ищет файл .htaccess в запрошенном каталоге, если он не находит его, он смотрит в родительскую папку и так далее, пока не достигнет общедоступного каталога. Когда вы запрашиваете / forum /, он находит там файл .htaccess и выключает RewriteEngine.

1 голос
/ 02 января 2010

Это также будет работать:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php

Если вы разместите phpBB в общедоступной папке, веб-сервер сможет его увидеть, и 2-ые две строки этого кода исключат «реальные файлы» и «реальные папки» из перезаписи, что вы и хотите для forum папка. Очевидно, что в прошлый раз весь трафик фреймворка помещается в файл index.php.

1 голос
/ 12 ноября 2009

Через некоторое время я нашел свой ответ. Я просто поместил свою папку 'forum' в папку 'public', и она работает для меня без изменения моего файла .htaccess.

Вот мои настройки:

Моя структура каталогов теперь выглядит так:

/var/www/test/public/index.php
/var/www/test/public/.htaccess
/var/www/test/public/forum

Моя запись в httpd.conf выглядит так:

<VirtualHost 127.0.0.1>
    ServerName test.dev
    DocumentRoot 'C:\wamp\www\test\public'
</VirtualHost>

Мой файл .htaccess выглядит следующим образом (он управляет как папками, так и URL-адресами контроллера и действия):

SetEnv APPLICATION_ENV development

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

Последняя строка в приведенном выше файле .htaccess позволяет мне использовать мой URL без index.php в URL.

После настройки выше я могу правильно использовать следующие URL:

http://test.dev/authentication/login
http://test.dev/student/profile
http://test.dev/forum/

В приведенных выше URL-адресах «аутентификация» и «студент» являются контроллерами. 'login' и 'profile' - действия, а forum - это каталог

Комментарии приветствуются. Спасибо

...