【发布时间】:2023-03-12 11:13:01
【问题描述】:
更新:更改了此问题的标题以反映我想要的内容
我希望使用 .htaccess 将所有目录中的所有文件视为参数,除了 /public/ 目录及其所有子目录中的所有文件。
我尝试了很多东西,但都没有奏效。我当前的 .htaccess 文件如下所示:
DirectorySlash Off
RewriteEngine On
RewriteBase /
# remove access to .htaccess
RewriteCond %{THE_REQUEST} /\.htaccess [NC]
RewriteRule ^ - [F]
# remove access to launcher.php
RewriteCond %{THE_REQUEST} /launcher\.php [NC]
RewriteRule ^ - [F]
# enforce HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# treat existing directories as parameters
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L]
# handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)/?$ launcher.php?url=$1 [QSA,L]
这个文件已经做了以下事情:
- 将所有目录(无论是否存在)都视为参数
- 禁止访问 .htaccess 和 launcher.php
- 强制使用 HTTPS
- 将所有请求重定向到launcher.php
请注意,我希望将所有文件视为参数,而不仅仅是禁止访问。例外情况是 /public/ 文件夹及其所有子目录中的所有文件。
【问题讨论】:
标签: regex apache .htaccess mod-rewrite