好的...
厌倦了这个问题。所以我想我会问这里
只是为了澄清我确实遵循Cake PHP文档。我确实谷歌了近2个小时,猜猜是什么......没有运气
我在webroot等编辑了我的htaccess文件,包括:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
根据本网站上另一张海报的建议
没有运气。我在这里错过了一些特别的东西,比如我的装置上有一点神秘的独角兽灰尘,还是我是傻瓜?
Lemme知道你是否需要别的东西
哦,我刚刚做了LAMP安装的事情
非常感谢您的指导:)
[edit] cahnged标签为2.4而不是2.3&lt; - 我的不好
答案 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文件配置您的应用