【问题标题】:cakephp doesn't work url-rewriting on Ubuntucakephp 在 Ubuntu 上无法进行 url 重写
【发布时间】: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 步,我什么都做了。谢谢^^"

标签: apache cakephp mod-rewrite cakephp-2.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

    【讨论】:

      猜你喜欢
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 2015-10-19
      • 2011-03-06
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多