Laravel 从框架中跳过目录

Laravel skip directory from framework

我遇到了一个问题,我的站点映射如下所示:

- app
- bootstrap
- public_html
  - archives
  - css
  - js
  index.php
- vendor
composer.json
etc...

我的 .htaccess 位于 public_html。我想从整个框架中跳过目录 public_html/archives。我该怎么做?我希望路线 mysite.com/archives 可以在 Laravel.

之外访问

编辑: 这是我的 htaccess 文件

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteCond %{REQUEST_URI} "/public/archives/" <--- ADDED!
RewriteRule ^(.*)/$ / [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

正如其他人所指出的,Laravel 不会处理任何存在的文件或目录,因为以下规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

首先,从您的 .htaccess 文件中删除这条规则:

RewriteCond %{REQUEST_URI} "/public/archives/"

然后,在RewriteEngine On行之后,需要添加这条规则:

RewriteRule ^archives/?$ - [PT]

因此您的 .htaccess 文件将如下所示:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteRule ^archives/?$ - [PT]

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ / [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

或者,您可以在 RewriteCond %{REQUEST_FILENAME} !-d 之前添加以下行:

RewriteCond %{REQUEST_URI} !^/archives/?.*$