Zend和.htaccess

eme*_*ava 10 apache .htaccess zend-framework

我的默认'zend'应用程序具有此默认结构

/zend + webroot
    /application
    /config
    /library
    /public
        .htaccess
        index.php
Run Code Online (Sandbox Code Playgroud)

默认.htaccess通过./public/index.php重定向各种控制器/操作详细信息

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

我使用此默认网址来访问该应用

http://domain/index.php
Run Code Online (Sandbox Code Playgroud)

我现在已经转移到共享主机,其中webroot位于'zend'根目录之上.

/webroot
    /zend
        /application
        /config
        /public
            index.php
           .htaccess
Run Code Online (Sandbox Code Playgroud)

但我只能通过此URL访问我的应用程序

http://domain/zend/public/index.php
Run Code Online (Sandbox Code Playgroud)

我希望能够使用

http://domain/zend/index.php
Run Code Online (Sandbox Code Playgroud)

并有.htaccess重定向.

我想知道如何调整.htaccess文件来重定向URL请求.我读了这个教程,但我没有为我工作

/webroot
    /zend
        .htaccess
        /application
        /config
        /library
        /public
            index.php
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这是.htaccess内容

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

有人可以发现什么吗?

Rob*_*len 17

创建包含以下代码的zend/index.php:

<?php include 'public/index.php';
Run Code Online (Sandbox Code Playgroud)

现在创建包含以下代码的zend/.htaccess:

SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteRule .* index.php
Run Code Online (Sandbox Code Playgroud)

确保您的images/css/js文件都在zend/public /中,并且不要删除zend/public/.htaccess文件:)

不要忘记请求的baseUrl不包含'/ public',因此在引用面向公众的文件时,您需要自己添加它.

问候,

抢...