Головоломка сбоя загрузки контроллера Zend Framework - PullRequest
0 голосов
/ 16 января 2010

У меня есть .htaccess файл, который выглядит так:

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]

Если я захожу на свой сайт, с которым я тестирую, скажем, http://www.example.com/,, страница индекса загружается правильно.

Это приложение Zend Framework, и поэтому оно должно маршрутизировать вещи на мои контроллеры, как это происходит правильно, если я перейду к http://www.example.com/index/index или http://www.example.com/index,, указывающим действие контроллер +, и контроллер соответственно.

Это также работает, если я делаю что-то вроде http://www.example.com/index/test,, где я определил другое действие на контроллере индекса под названием test.

Но если я сделаю TestController.php файл и попытаюсь перейти к http://example.com/test/, Apache вернется:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>404 Not Found</title> 
</head><body> 
<h1>Not Found</h1> 
<p>The requested URL /path/to/website/root/public/index.php was not found on this server.</p> 
<hr> 
<address>Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch Phusion_Passenger/2.0.3 mod_perl/2.0.3 Perl/v5.8.8 Server at www.example.com Port 80</address> 
</body></html> 

Кто-нибудь может увидеть, что я облажался здесь?

Billy3

РЕДАКТИРОВАТЬ: конфигурация для моего сайта выглядит примерно так:

Alias /MySiteRoot/ "/usr/local/vsites/something/www/"
<Directory /usr/local/vsites/something/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

Ответы [ 3 ]

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

Обычно я сталкивался с этой проблемой, когда mod_rewrite не работал.

Если у вас уже включен mod_rewrite, в файле конфигурации /etc/apache2/sites-available/yoursite.com убедитесь, что для AllowOverride установлено значение All.

0 голосов
/ 25 января 2010

Оказывается, что если ваш сайт не является корнем домена, вы должны добавить директиву RewriteBase для правильного форматирования. Я все еще не знаю, почему он сообщил о правильном файле заранее, но теперь он работает.

Спасибо и хорошего дня:)

0 голосов
/ 17 января 2010

Так что, если я правильно прочитал, маршрутизация работает правильно, но не тогда, когда вы указываете только контроллер в URL.

Итак, у вас есть следующее:

class TestController extends Zend_Controller_Action
{

    //do you have an index action???
    public function indexAction()
    {

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...