新手 - 我需要使用httpd.conf来使CakePHP正常工作?

时间:2011-01-11 18:19:41

标签: cakephp httpd.conf

(不确定这是属于此处还是网站管理员;如有必要,请移动。)

我是蛋糕的新手,用apache不是更好;我弄完了 很多PHP,但总是有一个已经设置的服务器 其他人。所以我正在通过basic blog tutorial,而且它 表示:

  

关于mod_rewrite的注释   有时新用户会遇到mod_rewrite问题,所以我会   在这里略微提到它们。如果Cake欢迎页面看起来有点像   有趣(没有图像或CSS样式),它可能意味着mod_rewrite不是   在您的系统上运行。这里有一些提示可以帮助你   运行:

     

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

     

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

     

出于某种原因,您可能已获得CakePHP的副本   没有所需的.htaccess文件。这有时会发生,因为   某些操作系统会处理以“。”开头的文件。隐藏的,和   不要复制它们。确保您的CakePHP副本来自下载   网站的部分或我们的SVN存储库。

     

确保正确加载mod_rewrite!你应该看到   像LoadModule rewrite_module libexec / httpd / mod_rewrite.so这样的东西   和你的httpd.conf中的AddModule mod_rewrite.c。“

我在linux上使用XAMPP。我在opt / lampp /中找到了我的httpd.conf文件 等,但我不确定我需要做什么。我找了 “重写”,而且只有一行:

LoadModule rewrite_module modules / mod_rewrite.so

AddModule mod_rewrite.c没有任何内容。

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

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

编辑添加虚拟主机样本:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    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>

2 个答案:

答案 0 :(得分: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>

修改

如果您尝试将其设置为本地域,请在配置了WAMP的情况下设置本地域(在Windows上) 注意:对于不同类型的安装,可能会稍微调整一下 找到您的主机文件(我的位于C:\ WINDOWS \ system32 \ drivers \ etc \ hosts) 将其插入底部

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

要测试主机名打开命令提示符并运行ping mypro.localhost # 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(如果您之前没有创建过)

答案 1 :(得分: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将所有无法处理的请求(因为资源不存在)指向index.php。当发生这种情况时,CakePHP接管并将请求路由到适当的控制器和操作。

我不熟悉XAMPP的配置方式,因此我无法告诉您VirtualHost定义的位置。也许其他人可以在这里发声...