PHPZend, MVC Web Application и проблема Apache Rewrite - PullRequest
1 голос
/ 18 июня 2010

Я нахожусь в процессе создания веб-приложения MVC с использованием инфраструктуры Zend, и я столкнулся со странной проблемой.

Если у меня раздел httpd.conf VirtualHost и корневой файл .htaccess веб-сайта настроен односторонним образом, Apache не читает файл index.php (т. Е. Www [dot] mywebsite [dot] com / fails), ничего не пишет в журнал перезаписи и помещает эту ошибку в общий файл журнала ошибок:

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /hg/software/cims/src/public/

Тем не менее, снова с теми же настройками httpd.conf и .htaccess, я могу получить доступ к своему экрану входа в систему (т. Е. Www [точка] mywebsite [точка] com / account / login успешно), и в перезаписи есть много информации журнал.

Однако, если я переместил команды перезаписи .htaccess в блок Directory в VirtualHost и установил для AllowOverride значение «Нет», произойдет обратное. Apache читает и отображает index.php (т. Е. Www [dot] mywebsite [dot] com / success), но не выводит меня на экран входа в систему и не пытается напрямую получить доступ к экрану входа в систему (т. Е. Www [dot] mywebsite [dot ] com / account / login не удается).

Thee соответствующие настройки для первого условия ошибки:

httpd.conf:

RewriteEngine On
RewriteLog /hg/hgweb/logs/appdev_rewrite.log
RewriteLogLevel 1

<VirtualHost *:80>
    SetEnv ETSSERVER mywebsite
    SetEnv VHOST appdev
    SetEnv APPLICATION_ENV development
    ServerName appdev
    ServerAlias appdev.mywebsite.com
    ServerPath /hg/software/appdev/src/public/
    DocumentRoot /hg/software/appdev/src/public/
    ErrorLog /hg/hgweb/logs/appdev_error.log
    CustomLog /hg/hgweb/logs/appdev_access.log common
    <Directory />
        Options Indexes FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

.htaccess:

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

Любое понимание того, что может быть причиной этого, очень ценится.

...