Zend Framework с phpBB: проблема с URL

Я использую zend framework с сервером Apache на Ubuntu. Когда я пробую свой сайт на локальном хосте, я использую следующий URL-адрес

Например:

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

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

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

http://localhost/test/forum/

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

http://test.dev/forum/

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

Спасибо


person Naveed    schedule 02.11.2009    source источник


Ответы (3)


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

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

RewriteEngine Off 

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

person Goran Jurić    schedule 02.11.2009
comment
Я использую сервер Apache. Можете ли вы сказать, что я должен написать именно в файле .htaccess. спасибо за ответ. - person Naveed; 02.11.2009
comment
Пожалуйста, опубликуйте свой текущий файл .htaccess, чтобы я мог взглянуть на него. - person Goran Jurić; 02.11.2009
comment
SetEnv APPLICATION_ENV development RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [ИЛИ] RewriteCond %{REQUEST_FILENAME} -l [ИЛИ] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index. php [NC, L] - person Naveed; 03.11.2009
comment
У меня есть строки выше в моем файле .htaccess в общей папке. Извините за весь код в одну строку. - person Naveed; 03.11.2009
comment
Ваш ответ мне очень помог. Спасибо - person Naveed; 12.11.2009
comment
Вы можете проверить мой ответ. как вы думаете, у него есть какая-то проблема / ошибка :) Я проголосовал за ваш ответ. - person Naveed; 13.11.2009

Через некоторое время я нашел свой ответ. Я только что поместил свою папку «форум» в «общедоступную» папку, и она работает для меня без изменения моего файла .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-адресах «аутентификация» и «ученик» являются контроллерами. «логин» и «профиль» — это действия, а форум — это каталог

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

person Naveed    schedule 12.11.2009

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

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

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

person danielrsmith    schedule 02.01.2010