Zend框架的共享主机(Zend Framework on shared hosting)

2019-06-25 16:24发布

我是新来的Zend Framework。 我想知道如何实现一个共享的主机Zend框架。 因为Zend框架的文件夹结构的所有视图文件被放入“公共”文件夹中。

假设

“/”是我主要的根文件夹和公共像“/公用”

因此该URL变为“ HTTP://网站/公/ .. .bla喇嘛......”

它是否正确?

或是否有任何其他的方法?

我没有任何权限创建一个虚拟主机。

那么该怎么办?

我希望你明白我的问题。 如果没有,请提问。

谢谢!

Answer 1:

我认为最好的方法是删除(Zend Framework的目录结构)公共目录中的.htaccess,并把它与下面的内容到你的“根”目录:

 RewriteEngine On 

重写规则^ htaccess的$ - [F]的RewriteCond%{REQUEST_URI} = “” 重写规则^ * $ /public/index.php [NC,L]

的RewriteCond%{REQUEST_URI}!^ /公/。 $重写规则^ $ /公共/ $ 1的RewriteCond%{REQUEST_FILENAME} -f重写规则^ * $() - [NC,L]

重写规则^公共/.*$ /public/index.php [NC,L]



Answer 2:

包括这.htacces您的基本路径(即/../public)下的文件:

RewriteEngine On

# Exclude some directories from URI rewriting
#RewriteRule ^(dir1|dir2|dir3) - [L]

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]

而离开那是publc目录,它是下的.htaccess。

所以,你将有2个.htaccess文件,一个公共目录下(从Zend框架文档中的普通一员)和第二个你的基本路径(一个我张贴以上)下。



Answer 3:

你应该把你的项目的公共文件夹,WWW文件夹中的主机,所以你的地址将成为yourdomain.com/。 你的源代码文件夹,如图书馆,应用程序......应在与WWW文件夹同一级别的地方,在它没有。 此方法将推广你的网站的安全性



Answer 4:

事实上,这不是运行一个共享的主机Zend框架应用的最佳idead。 我真的建议得到一个虚拟专用主机(VPS)。 有很好的和廉价hostings在那里与Zend框架和已经安装,并定期更新其他框架。 我在servergrove ,它已经很大为止!

但是,这并不意味着你不能让一个共享的主机工作。 你只需要相当具有.htacess工作。 把公共文件夹的内容到你的根目录,并在bootstrap.php中调整自己的路径,确保所有其他文件夹不能直接访问并使用通过您的index.php路由一切通常的做法ZF。



Answer 5:

从ArneRie答案并没有为我工作,我终于结束了使用洛伦佐Albertons解决方案 。 希望这是帮助别人得到更快的解决方案。

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]


Answer 6:

其实我已经搜索了一下,发现很多答案(其中大部分在这里SO),但他们没有为我工作。 所以,我终于找到了解决办法 - 的.htaccess的根目录:

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

这一次从http://framework.zend.com/wiki/display/ZFDEV/Configuring+Your+URL+Rewriter和index.php文件的根目录:

<?php 
define('RUNNING_FROM_ROOT', true);
include 'public/index.php';
?>

这一次从http://akrabat.com/zend-framework/zend-framework-on-a-shared-host/和它的作品对我来说,即使有在根文件夹等项目目录-像论坛左右。 认为它可能是有用的人:)



Answer 7:

此外罗布·艾伦写了一个很好的解决方案

我使用Zend Framework 2,它为我工作。 Alghough我没有做过部分“引用面向公众的文件”,从上面的链接。

我只是从我的layout.phtml改变的代码:

$basePath = $this->basePath();

至:

$basePath = $this->basePath();
if (defined('RUNNING_FROM_ROOT')) {
    $basePath .= 'public/';
}


Answer 8:

我一直在同样的情况,并已提出了Zend库文件夹下下的公共像“SRC” - 并使用一个.htaccess从全部拒绝。 你必须要兼顾一对夫妇的路径,但它工作正常。



Answer 9:

。 。 。 如何Magento的使用Zend框架??? 我使用的XAMPP,我没有在本地安装的Magento没有修改php.ini文件,在http.conf也没有虚拟主机。



Answer 10:

最近,我遇到了这个问题,并通过这个线程我能找到一个解决方案。 我使用ZF2。 因此,所有我需要做的就是在目录zend的相关文件,我们可以命名说src 。 此目录将驻留在公共或根目录(如/www

  1. 建立在“SRC”目录.htaccess文件,并添加来自所有指令拒绝。

  2. 在索引文件,将工作目录更改到src通过执行以下文件夹:

     define('SRC_ROOT', 'src'); chdir(SRC_ROOT); 

...你是好去!



Answer 11:

设置虚拟主机通常的httpd.conf或额外的/的httpd-vhosts.conf内完成。 如果您正在使用的httpd-vhosts.conf,确保此文件是由您的主要httpd.conf文件包括在内。 一些Linux发行版(比如:Ubuntu的)包的Apache,这样的配置文件存储在/ etc / apache2的,并创建每个虚拟主机一个文件夹的/ etc / apache2的/启用的网站,里面。 在这种情况下,你会放置虚拟主机块以下,进入文件/ etc / apache2的/ / ZF2教程启用的站点 - 。

确保了NameVirtualHost被定义并设定为“*:80”或类似的,然后定义沿着这些路线的虚拟主机:

 Setting up the virtual host is usually done within httpd.conf or extra/httpd-vhosts.conf. If you are using httpd-vhosts.conf, ensure that this file is included by your main httpd.conf file. Some Linux distributions (ex: Ubuntu) package Apache so that configuration files are stored in /etc/apache2 and create one file per virtual host inside folder /etc/apache2/sites-enabled. In this case, you would place the virtual host block below into the file /etc/apache2/sites-enabled/zf2-tutorial. Ensure that NameVirtualHost is defined and set to “*:80” or similar, and then define a virtual host along these lines: <VirtualHost *:80> ServerName zf2-tutorial.localhost DocumentRoot /path/to/zf2-tutorial/public SetEnv APPLICATION_ENV "development" <Directory /path/to/zf2-tutorial/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> Make sure that you update your /etc/hosts or c:\windows\system32\drivers\etc\hosts file so that zf2-tutorial.localhost is mapped to 127.0.0.1. 

请确保您更新您的/ etc / hosts或C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ ETC \ hosts文件,ZF2-tutorial.localhost被映射到127.0.0.1。



Answer 12:

我建议simpliest:开发的方式您的应用程序,其中的index.php是在你的根(甚至更好-始终定义PUBLIC_PATH - dirname(__FILE__);在你的index.php,并链接相对于这个常数)。 随着应用程序和库文件夹。 您可以轻松地让他们从使用外不可访问deny from all在.htaccess。

该PUBLIC_PATH常数也有助于当你公开不公开。 (公共HTML或/公共HTML / WWW(对我来说))



文章来源: Zend Framework on shared hosting