我的.htaccess文件配置有一个小问题:
问题解释:
我的.htaccess:
根:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^$ app/webroot [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
/应用:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
/应用/根目录
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 0 :(得分:0)
offical docs中提供的示例的唯一区别是RewriteBase
指令的位置。
所以,我建议尝试以下(未经测试):
root/.htaccess
删除RewriteBase /
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
app/webroot/.htaccess
在此处添加RewriteBase
指令并调整到您的文件夹
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /path/to/cake/app
# exclude dirs and files
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# prevent invalid assets from being parsed by CakePHP
RewriteCond %{REQUEST_URI} !^/(webroot/)?(img|css|js)/(.*)$
RewriteRule ^ index.php [L]
</IfModule>
我认为Cake2使用QueryStringAppend(QSA)作为RewriteRule
的index.php。
然后最后一条规则是RewriteRule ^(.*)$ index.php [QSA,L]
,但这取决于你的Cake版本。
旁注:启用Rewrite Logging for Apache。这有助于调试重写规则。不要忘记再次关闭它。
RewriteLogLevel 3
RewriteLog "/var/apache/logs/rewrite.log