首页 > 解决方案 > Laravel 应用的 AliasMatch 和 DirectoryMatch

问题描述

我有一个在 Xampp 上运行的 Laravel 应用程序,为此我在 Directory 指令中配置了以下内容:

<Directory "C:/xampp/laravel/1.2.1/public">
    Options Indexes FollowSymLinks Includes ExecCGI

    AllowOverride All

    Require all granted
</Directory>

另外,我有以下别名:

Alias /laravel/1.2.1 "C:/xampp/laravel/1.2.1/public"

我正在尝试找出一种方法来设置等效的 AliasMatch 和 DirectoryMatch 指令,这样每次我需要 Laravel 应用程序的另一个实例时,我就不需要添加另一个别名。即,如果我去 http://localhost/laravel/1.2.2,我应该得到位于 C:/xampp/laravel/1.2.2 的应用程序(但出于安全原因,只有子文件夹“public”应该是可访问的)。

我目前只有两个 Web 应用程序实例;一个在 /laravel/1.2.1 下,一个在 /laravel/1.2.2 下,但很快会添加更多,我不想为每个实例重复上述配置。

我一直在尝试以下设置:

<DirectoryMatch "C:/xampp/laravel/^([0-9]+\.[0-9]+\.[0-9]+\/public)">
    Options Indexes FollowSymLinks Includes ExecCGI

    AllowOverride All

    Require all granted
</DirectoryMatch>

AliasMatch ^/laravel/([0-9]+\.[0-9]+\.[0-9]+)$ "C:/xampp/laravel/$1/public"

但是,如果我尝试访问现有实例(例如 /laravel/1.2.1),我会收到 404 错误,并且会在 URL 中添加一个斜杠(最终会是 http://localhost/laravel/1.0.1/idk如果这是相关的)。如果我尝试一个不存在的(如 /laravel/2.0.5),我会在 apache error.log 中得到 403 Forbidden 和以下内容:

AH01630: client denied by server configuration: C:/xampp/laravel/2.0.5

我真的希望一些 Apache 专家可以在这里帮助我,如果我正在尝试的不是一个好的实践,我当然愿意接受其他选择来实现我的目标。

标签: laravelapachexampp

解决方案


推荐阅读