我有一个子域,我已经部署了我的zend应用程序,问题是它指向目录说abc
并且我无法将其更改为指向public
目录是否存在我可以在根目录上放一个.htaccess
文件,重定向到public
目录?能做到吗?还有另一种方法可以完成它
我在公共目录中的index.php
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
my .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]
目前的目录结构如下
/myroot
-.settings
-application
-docs
-library
-public
-tests
-.buildpath
-.proect
-.zfproject.xml
答案 0 :(得分:2)
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]
没有错误也没有问题..
答案 1 :(得分:1)
我希望我能正确设置你的域名。如果你有这个设置
sub.domain.net --> /myroot
您需要在该(/ myroot)文件夹中使用.htaccess,因为它是您的http请求的基础。看起来应该是这样的
RewriteEngine On
RewriteBase /public
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ public/index.php [NC,L]
RewriteBase指令应该在RewriteCond中找到所有请求,并主要应用于第一个RewriteRule。它基本上设置(重写)所有HTTP路径请求的相对根。第二个RewriteRule最终会触发您的应用程序,这是一个本地路径。 (我希望我对这最后一条规则没有错。如果不起作用,请尝试不公开。我无法测试它,但几年前我有一个应用程序可以像这样工作。)