[英]Apache2 Rewrite in Phalcon PHP Framework
默认情况下,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
需要更改什么重写参数才能访问第一类链接?
您没有将文档根目录指向公共文件夹,这意味着您可以使用或不使用公共前缀来访问它。 这将导致问题,但是,我会告诉你如何解决它。
确保您的vhost使用目录“/ path / to / project / public”作为文档根目录,这将确保所有请求都路由到公共文件夹中的index.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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.