CakePHP 2.4.3 URL重写模块无法正常工作

时间:2013-12-23 23:55:01

标签: php cakephp url-rewriting cakephp-2.4

好的...

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

只是为了澄清我确实遵循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>
    
  3. 根据本网站上另一张海报的建议

    没有运气。我在这里错过了一些特别的东西,比如我的装置上有一点神秘的独角兽灰尘,还是我是傻瓜?

    Lemme知道你是否需要别的东西

    哦,我刚刚做了LAMP安装的事情

    非常感谢您的指导:)

    [edit] cahnged标签为2.4而不是2.3&lt; - 我的不好

3 个答案:

答案 0 :(得分:1)

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

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

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

在您的config目录中找到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文件中的规则正在执行。

答案 1 :(得分: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]
但是,我不认为这是你的问题。

答案 2 :(得分: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文件配置您的应用