【问题标题】:CakePHP URL rewriting not working on UbuntuCakePHP URL 重写在 Ubuntu 上不起作用
【发布时间】:2013-12-16 21:05:30
【问题描述】:

我似乎无法在带有 apache2 的 Ubuntu 12.04 服务器上进行 URL 重写,并且当默认页面加载(主页)时,它只是没有 CSS 的纯文本。我正在使用 Cake 2.3.9,并且在全新安装到 /var/www/ 时收到以下消息。所以我的根目录看起来像

/var/www/app
/var/www/lib
/var/www/index.php
/var/www/.htaccess
....

我得到的错误是

您的服务器上未正确配置 URL 重写。 1.帮我配置一下 2.我不会/不能用URL重写

我尝试了this post 中的所有内容,但仍然收到消息。

那篇文章中我唯一没有做的是接受的答案,即

原来 .htaccess 文件没有与 cakePHP 源代码一起被复制。 这是使用 cp 命令或隐藏文件不可见时的常见问题 在文件浏览器中,除非您复制顶级目录。 将文件直接复制到我的项目文件夹为我修复了它,而不必弄乱我的 apache 设置。

该用户是否建议确保 .htaccess 是 /var/www?我不太明白他们的建议。我在本地下载了 Cake,然后使用 SFTP 将其上传到我的 ubuntu 服务器上的 /var/www。

除非有一些替代的 modrewrite 设置,否则我几乎可以肯定它已启用。当我输入sudo a2enmod rewrite 时,它会显示Module rewrite already enabled

我也尝试了所有here,但仍然没有运气。我完全被困住了。

【问题讨论】:

  • 我认为 apache 服务中没有启用 mod_rewrite
  • 当我输入“sudo a2enmod rewrite && sudo service apache2 reload”时,它显示“模块重写已启用”

标签: php .htaccess cakephp mod-rewrite ubuntu


【解决方案1】:

是的,.htaccess 需要位于公共 Web 根目录中 - 在这种情况下是 /var/www。 确保您的网络服务器也可以读取该文件。

如果这不起作用: 确保安装并启用了 mod_rewrite 模块。它应该在 Ubuntu 12.04 上。 您可以通过列出 /etc/apache2/mods-enabled 的内容来检查。你应该会看到 rewrite.load 列出来。

如果没有,您可以这样启用它:

sudo -i
cd /etc/apache2/mods-enabled
ln -s ../sites-available/rewrite.load rewrite.load
apache2ctl restart

【讨论】:

  • 我使用的是 apache2,所以我做了 cd /etc/apache2/mods-enabled。当我尝试创建链接时,它会响应“ln: failed to create symbolic link `rewrite.load': File exists”
  • 是的,apache2 - 将编辑答案。看起来它已经在那里了。执行 LS 时应该显示 simlink。
  • 我试过你编辑的答案,它仍然给出消息“ln: failed to create symbolic link `rewrite.load': File exists”
  • 对不起 - 我的意思是你不需要创建链接,因为文件存在 - 所以启用了这个(看起来你从 a2enmod 得到了相同的答案)。
【解决方案2】:

我卸载并重新安装了我的 LAMP 堆栈,现在它可以工作了。我还从 2.3.9 降级到 CakePHP 2.3.8,所以也许里面也有一些东西。

不管怎样,它现在正在工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2014-10-10
    • 2012-12-23
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    相关资源
    最近更新 更多