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/?.*$
我遇到了一个问题,我的站点映射如下所示:
- 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/?.*$