繁体   English   中英

Apache 2在Phalcon PHP Framework中重写

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM