cakephp 在 Ubuntu 上无法进行 url 重写
Posted
技术标签:
【中文标题】cakephp 在 Ubuntu 上无法进行 url 重写【英文标题】:cakephp doesn't work url-rewriting on Ubuntu 【发布时间】:2012-06-05 19:31:02 【问题描述】:全部。这次我尝试使用 cakephp,但出现“您的服务器上未正确配置 URL 重写。1)帮我配置它 2)我不/不能使用 URL 重写”。我可以知道这是 apache 和 .htaccess 问题,例如 /etc/apache2/sites-avaliable/default 和每个目录 .htaccess。
我的开发环境...
vmware fusion4 上的 Ubuntu12.04 apache2.2.22 mysql5.5 php5.3.10 cakephp2.1按照我的流程...
1)/etc/apache2/httpd.conf
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
2)启用 mod_rewrite
sudo a2enmod rewrite
sudo service apache2 reload
3) 编辑 /etc/apache2/sites-avaliable/default (AllOverride None to AllOverride All)
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
prompt: sudo service apache2 reload
4) 编辑或检查每个 .htaccess 文件 ->蛋糕根目录
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
->应用根目录
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
->webroot 目录
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
这个问题已经解决了,谢谢。
【问题讨论】:
对我来说这就是诀窍。 sudo a2enmod rewrite && sudo service apache2 reload 除了第 1 步,我什么都做了。谢谢^^" 【参考方案1】:这可能是文件权限问题。尝试将 webroot 和 tmp 目录的权限递归设置为 777。 tmp 目录可能需要 sudo。
sudo chmod -R 777 /path/to/app/webroot/
sudo chmod -R 777 /path/to/app/tmp/
【讨论】:
你不能简单地将777权限授予webroot。这将导致零安全性【参考方案2】:我也有这个问题。结果发现 .htaccess 文件没有与 cakePHP 源代码一起复制。这是使用 cp 命令或在文件浏览器中看不到隐藏文件时的常见问题,除非您复制***目录。
将文件直接复制到我的项目文件夹为我修复了它,而不必弄乱我的 apache 设置。
cp ~/git/cakePHP/.htaccess ~/project/folder/
【讨论】:
【参考方案3】:可能的错误配置:
检查文件http://your_domain_name/css/cake.generic.css
是否可以从您的浏览器访问。如果没有,您将在默认主页中收到警告
如果您在根级别有 HOME/css
目录,UrlRewriting 不会将http://your_domain_name/css/cake.generic.css
重定向到HOME/app/webroot/css/cake.generic.css
。
因此找不到 css 文件,导致 URL 重写未正确配置的消息。 (看文件app/View/Pages/home.cpt)
解决方案: 彻底删除根级别的HOME/css
目录。将您的 css 文件放在 HOME/app/webroot/css
。
【讨论】:
以上是关于cakephp 在 Ubuntu 上无法进行 url 重写的主要内容,如果未能解决你的问题,请参考以下文章
在 Ubuntu 10.4 中运行 CakePHP 时遇到文件权限错误