1

好的...

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

只是为了澄清一下,我确实遵循了 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 安装的事情

您的指导将不胜感激:)

[编辑] 将标签更改为 2.4 而不是 2.3 <-- 我的错

4

3 回答 3

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 文件中的规则现在正在执行。

于 2013-12-24T12:12:14.257 回答
0

/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 文件来配置您的应用程序

于 2013-12-24T05:09:53.007 回答
0

我认为您缺少 /$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]

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

于 2013-12-24T01:38:51.957 回答