默认情况下,PhalconPHP 提供这种类型的文件夹结构:
project/
app/
controllers/
models/
views/
public/
css/
img/
js/
index.php
和 2 个 .htaccess 文件
#/project/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
#/project/public/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
它适用于以下链接:1)site.com/controller/method
但也以公众为第一部分:2)site.com/public/controller/method
需要更改哪些重写参数以仅访问第一类链接?
您没有将文档根目录指向公用文件夹,这意味着您可以如前所述,使用或不带有公共前缀来访问它。这将导致问题,但是,我会告诉你如何解决它。
确保您的虚拟主机使用目录"/path/to/project/public"作为文档根目录,这将确保所有请求都路由到公用文件夹中的索引.php。该文件将自动查找文档根目录之外的其他所有内容。
删除项目文件夹根目录中的 .htaccess 文件,使用此方法是多余的。
尝试将其添加到第一个块:
RewriteCond %{THE_REQUEST} /+public/
RewriteRule ^public/(.*)$ /$1 [L,R]
所以像这样:
#/project/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{THE_REQUEST} /+public/
RewriteRule ^public/(.*)$ /$1 [L,R]
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>