当前位置: 首页 > 工具软件 > Apache Falcon > 使用案例 >

phalcon 配置(apache)

甄煜
2023-12-01

以下是可用于使用Phalcon设置Apache的潜在配置。这些注释主要关注mod_rewrite模块的配置,允许使用友好URL和路由器组件。通常,应用程序具有以下结构:

test/
  app/
    controllers/
    models/
    views/
  public/
    css/
    img/
    js/
    index.php
    .htaccess
  .htaccess    

第一个放在根目录

这是最常见的情况,应用程序安装在文档根目录下的任何目录中。在这种情况下,我们使用两个.htaccess文件,第一个隐藏应用程序代码,将所有请求转发到应用程序的文档根目录(public/)。

请注意,使用.htaccess文件需要安装aspache才能设置AllowOverride All选项。

# test/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule   ^$ public/    [L]
    RewriteRule   ((?s).*) public/$1 [L]
</IfModule>

第二个.htaccess 文件位于public/目录中,这会将所有URI重写为public/index.php文件:

# test/public/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond   %{REQUEST_FILENAME} !-d
    RewriteCond   %{REQUEST_FILENAME} !-f
    RewriteRule   ^((?s).*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

对于在uri参数中使用波斯字母’م’(meem)的用户,mod_rewrite存在问题。要使匹配与英文字符一样工作,您需要更改.htaccess文件:

# test/public/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond   %{REQUEST_FILENAME} !-d
    RewriteCond   %{REQUEST_FILENAME} !-f
    RewriteRule   ^([0-9A-Za-z\x7f-\xff]*)$ index.php?params=$1 [L]
</IfModule>

如果您的uri包含英语以外的字符,您可能需要采用上述更改以允许mod_rewrite准确匹配您的路由。

Apache配置
如果您不想使用.htaccess文件,可以将这些配置移动到apache的主配置文件中:

<IfModule mod_rewrite.c>
    <Directory "/var/www/test">
        RewriteEngine on
        RewriteRule  ^$ public/    [L]
        RewriteRule  ((?s).*) public/$1 [L]
    </Directory>
    <Directory "/var/www/test/public">
        RewriteEngine On
        RewriteCond   %{REQUEST_FILENAME} !-d
        RewriteCond   %{REQUEST_FILENAME} !-f
        RewriteRule   ^((?s).*)$ index.php?_url=/$1 [QSA,L]
    </Directory>
</IfModule>

虚拟服务器

第二种配置允许您在虚拟主机中安装Phalcon应用程序:

<VirtualHost *:80>

    ServerAdmin    admin@example.host
    DocumentRoot   "/var/vhosts/test/public"
    DirectoryIndex index.php
    ServerName     example.host
    ServerAlias    www.example.host

    <Directory "/var/vhosts/test/public">
        Options       All
        AllowOverride All
        Require       all granted
    </Directory>

</VirtualHost>
 类似资料: