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 重写的主要内容,如果未能解决你的问题,请参考以下文章

在 CakePHP 中保留父 slug

我无法在 Cakephp 4 中进行身份验证,错误 500

在 Ubuntu 10.4 中运行 CakePHP 时遇到文件权限错误

CakePHP 2.2.4 无法使用 HAVING 子句和计算字段对结果进行分页 - Haversine 公式

在 CakePHP 中无法使用 MySQL

如何从 CakePHP 中的 URL 字符串获取连接的路由?