(不确定这是属于此处还是网站管理员;如有必要,请移动。)
我是蛋糕的新手,用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>
答案 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定义的位置。也许其他人可以在这里发声...