Apache Cakephp:使用.htaccess删除索引上的/app/webroot
我在配置.htaccess文件时遇到了一个小问题: 对问题的解释:Apache Cakephp:使用.htaccess删除索引上的/app/webroot,apache,.htaccess,cakephp,Apache,.htaccess,Cakephp,我在配置.htaccess文件时遇到了一个小问题: 对问题的解释: cakephp文档根位于我的域指向的根上:www.example.com 当我转到www.example.com时,它会重定向到www.example.com/app/webroot 当我浏览到更深的目录时,一切正常,例如:www.example.com/Controller/action的url上不会有app/webroot 我的.htaccess: 根目录: 重新启动发动机 重写基/ 重写规则^$app/webroot
- cakephp文档根位于我的域指向的根上:www.example.com
- 当我转到www.example.com时,它会重定向到www.example.com/app/webroot
- 当我浏览到更深的目录时,一切正常,例如:www.example.com/Controller/action的url上不会有app/webroot
重新启动发动机
重写基/
重写规则^$app/webroot[L]
重写规则(*)app/webroot/$1[L]
/应用程序:
重新启动发动机
重写规则^$webroot/[L]
重写规则(.*)webroot/$1[L]
/app/webroot
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
与中提供的示例的唯一区别是RewriteBase
指令的位置
因此,我建议尝试以下方法(未经测试):
root/.htaccess
- 删除
RewriteBase/
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
- 删除
RewriteRule
。
最后一条规则是RewriteRule^(.*)$index.php[QSA,L]
,但这取决于您的Cake版本
旁注:启用。这有助于调试重写规则。别忘了再次关闭此功能
RewriteLogLevel 3
RewriteLog "/var/apache/logs/rewrite.log
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
<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>
RewriteLogLevel 3
RewriteLog "/var/apache/logs/rewrite.log