我有以下文件夹逻辑:
.htaccess
index.php
composer.json
(etc. with all processing files)
public/
.htaccess
design/
files/
(etc. with all static files)
在.htaccess中都有以下内容:
(.htaccess:)
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
(public/.htaccess)
RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
第一个.htaccess在开发MAMP时非常有用,并且在生产中未被请求,因为大多数网站都直接提供公共文件夹。
此请求的原因与public/index.php
文件的include '../index.php';
相反,例如,Slim使用$_SERVER['PHP_SELF']
,这会通过强制/公共进入网址来中断路由。 One dirty way to solve this涉及更改vendor / slim / slim文件夹中的文件,这应该是一个相对较大的遗忘。
答案 0 :(得分:0)
(在写我的问题时,我最终发现了一个我想分享的舒适解决方案)
(.htaccess)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^(.*)$ public/$1 [L]
(public/.htaccess)
RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ ../index.php/$1 [L,QSA]
正在开发中,
在制作时,只完成第二步和第三步。
这样,动态文件与静态文件严格分开。