【问题标题】:CakePHP 2.4.3 URL-Rewriting module not workingCakePHP 2.4.3 URL 重写模块不工作
【发布时间】:2014-01-12 05:29:20
【问题描述】:

好的...

厌倦了这个问题。所以我想我会在这里问

只是为了澄清一下,我确实遵循了 Cake PHP 文档。我用谷歌搜索了将近 2 个小时,猜猜是什么……不走运

  1. 我确实启用了 mod-rewrite -> 这花了我一段时间,因为我没有 httpd.conf 文件
  2. 我在 webroot 等中编辑了我的 htaccess 文件以包括:

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </IfModule>
    

根据本网站另一张海报的推荐

没有运气。我是否在这里遗漏了一些特别的东西,例如我的装置上的一些神秘的独角兽灰尘,还是我很愚蠢?

如果你需要别的东西,请告诉我

哦,我前段时间做了一个 LAMP 安装的事情

非常感谢您的指导 :)

[edit] 将标签更改为 2.4 而不是 2.3

【问题讨论】:

  • “不工作”是什么意思?
  • 请提供有关此 .htaccess 文件的更多信息,例如路径和所有...
  • 欢迎页面上没有样式,根据我的阅读,这意味着重定向不起作用。以及错误消息:您的服务器上未正确配置 URL 重写。 1) 帮我配置 2) 我不/不能使用 URL 重写
  • 对于路径,请查看以下 web dev 提供的答案

标签: php cakephp url-rewriting cakephp-2.4


【解决方案1】:

如果您必须启用 mod_rewrite,那么您的默认 apache 设置也需要更改以允许 .htaccess 正确执行。默认情况下,可公开访问的目录中的大多数 .htaccess 规则都将被拒绝。

根据你的设置,你应该有这样的东西......

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    deny from all
</Directory>

在您的配置目录中找到一个 apache,可能类似于

/etc/apache2/sites-available/default

请注意,上面的路径和上面目录标签中的 /var/www/ 路径可能不同。

您将需要更改一些内容,例如 AllowOveride 以及其他一些内容以匹配下面的内容。检查差异。

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

更改后,重新启动 apache,希望您会看到 .htaccess 文件中的规则现在正在执行。

【讨论】:

  • 感谢整理!
【解决方案2】:

/var/www/app/webroot/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

/var/www/app/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

/var/www/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ app/webroot/ [L]
    RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

请使用这些 .htaccess 文件来配置您的应用

【讨论】:

    【解决方案3】:

    我认为您缺少 /$1 部分。

    我在 webroot 中的 .htaccess 看起来像这样:

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
    </IfModule>
    

    我过去在某些服务器上也遇到过 rewrite 和 cakePHP 的问题,我需要在文件名的开头添加一个斜杠,如图所示:

    RewriteRule ^(.*)$ /index.php?/$1 [QSA,L]
    

    但是我不认为这是你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多