多个服务器目录配置的通用.htaccess重写规则

时间:2019-04-13 01:42:22

标签: apache .htaccess mod-rewrite

我的本​​地开发Web服务器上具有以下目录结构:

/www
    /f3-app-1
        /application
        /config
        /core
        /resources
        /ui
        /index.php
    /f3-app-2
        ...
    /f3-app-3
        ...

我将所有Web应用程序(f3-app-1,f3-app-2等)保存在文档根目录的子文件夹中。我正在使用http://localhost/f3-app-1/访问该应用程序,但未使用任何虚拟主机。

我需要将所有内容(uiresources中的文件除外)重定向到index.php。为此,我在.htaccess文件中使用了以下内容:

Options -Indexes
RewriteEngine On

RewriteCond %{REQUEST_URI} \.ini$
RewriteRule \.ini$ - [R=404]

RewriteCond %{REQUEST_URI} !^/f3-app-1/ui/
RewriteCond %{REQUEST_URI} !^/f3-app-1/resources/
RewriteRule .* index.php [L,QSA]

我的托管服务提供商的生产服务器正在使用虚拟主机来允许多个网站。将文件传输到他们的Web服务器后,我需要将.htaccess文件更改为以下内容:

...
RewriteCond %{REQUEST_URI} !^/ui/
RewriteCond %{REQUEST_URI} !^/resources/
RewriteRule .* index.php [L,QSA]

是否可以使这些mod_rewrite规则相对于Web应用程序的目录或.htaccess目录正常工作?

1 个答案:

答案 0 :(得分:1)

您可以将/f3-app-1设为可选:

RewriteCond %{REQUEST_URI} !^(/f3-app-1)*/ui/
RewriteCond %{REQUEST_URI} !^(/f3-app-1)*/resources/

但这是不好的做法。

正确的方法是在开发环境中也有虚拟主机。这将解决此问题以及与路径有关的其他所有问题。