2011-01-11 52 views
2

(不知道这是否属于这里或在网站管理员;请移步如果必要的话)新手 - 我需要使用httpd.conf来使CakePHP正常工作?

我是一个总的新手到蛋糕并没有太多与Apache更好;我已经完成了 大量的PHP,但总是使用其他人已经设置的服务器,这些服务器已由 设置。所以我要通过basic blog tutorial,它 说:

一个注mod_rewrite的 偶尔一个新的用户将运行到mod_rewrite的问题,所以我会 轻微一一列举。如果Cake欢迎页面看起来有点 有趣(无图像或CSS样式),这可能意味着mod_rewrite不是 在您的系统上运行。下面是一些提示,以帮助让你和 运行:

确保一个.htaccess覆盖被允许:在你的httpd.conf, 你应该有一个定义上 您的服务器为每个目录中的部分相当的部分。确保正确的 目录的AllowOverride设置为全部。

确保您正在编辑系统httpd.conf,而不是用户或 特定于站点的httpd.conf。

由于某些原因,您可能获得了CakePHP 的副本,但没有所需的.htaccess文件。这有时会发生,因为 某些操作系统会将以'。'开头的文件对待。作为隐藏,并且 不复制它们。确保您的CakePHP副本来自网站下载 部分或我们的SVN存储库。

确保你正在加载mod_rewrite!您应该看到 类似的LoadModule rewrite_module的libexec/httpd的/ mod_rewrite.so 并在httpd.conf AddModule一mod_rewrite.c。”

我使用XAMPP在Linux上,我发现我的httpd.conf文件中选择/ LAMPP/ 等,但我不知道我需要用它做我搜索过 “改写”,而且也只有一个行:

的LoadModule rewrite_module模块/ mod_rewrite.so

没有关于AddModule mod_rewrite.c。

我只是为我安装的目录创建一个Directory部分 Cake in并将AlllowOverride设置为All? (我创建了一个单独的 我的wwwroot子目录并安装在那里,因为我也有 安装了Joomla和CodeIgniter。)还有什么我需要 做的吗?我下载的Cake确实带有两个htaccess类型的文件 (._。htaccess和.htaccess) - 我需要对它们做什么吗?

感谢您提供给此非服务器管理员的任何帮助。

修改以添加虚拟主机样品:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /www/docs/dummy-host.example.com 
    ServerName dummy-host.example.com 
    ServerAlias www.dummy-host.example.com 
    ErrorLog logs/dummy-host.example.com-error_log 
    CustomLog logs/dummy-host.example.com-access_log common 
</VirtualHost> 

回答

1

第1步:你应该有启用了mod_rewrite,检查使用<?php phpinfo();

第2步:检查的AllowOverride

// I believe you already did that. 
// Make sure you are doing it for the correct webroot! 
<Directory /> 
    AlllowOverride to All 
</Directory> 

第3步:检查您的默认.htaccess文件是有在目录/mypro/mypro/app/mypro/app/webroot

第4步。.htaccess根据您的蛋糕项目安装可能需要路径修复。

e.g. project url http://localhost/mypro/app/webroot/ 
/mypro/app/webroot/.htacess 
<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ mypro/app/webroot/ [L] 
    RewriteRule (.*) mypro/app/webroot/$1 [L] 
</IfModule> 

编辑

如果你想安装它作为地域,设置本地域(在Windows上)与WAMP配置 注:这可能是调整了一点对于不同类型的设备 的找到你的hosts文件(矿位于C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ ETC \主机) 插入这对底部

# save and close this file named hosts 
127.0.0.1  mypro.localhost 

要测试的主机名Ø pen命令提示符并运行ping mypro。本地主机# If ping is good then move on

Now open your apache config file 
httpd.conf and httpd-vhosts.conf (my files are located at) 

C:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf 
# uncomment line below 
Include conf/extra/httpd-vhosts.conf 
C:\wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf 
# Insert virtual host entries like this, trim dummy entries (if any) 

# Changing DocumentRoot 
<VirtualHost *:80> 
    DocumentRoot "C:/wamp/www" 
    ServerName localhost 
</VirtualHost> 
<VirtualHost *:80> 
    DocumentRoot "C:/wamp/www/mypro/app/webroot" 
    ServerName mypro.localhost 
</VirtualHost> 

保存并关闭文件

创建目录C:/ WAMP/WWW/mypro(如果你以前没有创建)

0

ModRewrite使Apache的操纵请求的URL它处理请求之前。例如,如果您想将图像存储在/website_images中,但您想在HTML中将它们引用为/img/donkey.jpg,则可以使用ModRewrite将所有请求从/img/*更改为/website_images/*。它处理这个问题的方式是通过正则表达式,其中有整本关于它们的书籍。

就Apache而言,有很多配置“指令”(又名选项或设置)。了解您运行自己的服务器时最重要的是VirtualHost服务器。它们允许Apache处理对服务器IP地址的请求,并根据主机名(本质上是域)将它们路由到正确的网站。您应该在网站的VirtualHost配置中放置任何网站特定的指令,包括您的ModRewrite规则。注意:你也可以从网站目录的.htaccess文件中加载其他指令,但这不是最理想的(并且需要设置AllowOverride)。如果你有权访问httpd.conf和相关的VirtualHost指令,你应该使用它们。

看起来Apache已经配置为加载ModRewrite模块,所以你不需要改变它。在新的CakePHP网站的VirtualHost指令中,你可以使用<Directory /path/to/your/website>下的指令来设置ModRewrite:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

它看起来又大又吓人,但什么,做是告诉Apache直接,它不能处理(因为资源不前的所有请求ist)到index.php。发生这种情况时,CakePHP接管并将请求路由到相应的控制器和操作。

我不熟悉XAMPP是如何配置的,所以我不能告诉你这些VirtualHost定义在哪里。也许别人可以附和这里...

+0

感谢您的信息,科里!在我的主要httpd.conf文件中,有一行写道:#虚拟主机 #include etc/extra/httpd-vhosts.conf - 我已经将该文件中的内容添加到上面的OP中;我只是复制整个块并用我的应用程序路径替换*:80? – EmmyS 2011-01-11 18:39:13

+0

这会让我相信Apache被配置为在没有VirtualHost的情况下运行。您可以这样做,但这意味着您一次只能运行一个网站。如果你没有问题,你可以继续寻找任何现有的指向你的应用程序的行,并在其中添加Rewrite代码。如果你想使用VirtualHosts,那么你听起来像你在正确的轨道上;取消注释include行,打开httpd-vhosts.conf文件以添加重写指令。 – coreyward 2011-01-11 18:42:10

相关问题