您应该能够简单地更改 RewriteRule 以包含子文件夹:
Options -MultiViews
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /subfolder-app/index.php [L]
但是请注意,这不会随着您的环境“动态地”改变。如果你的 localhost 在 webroot 而不是子文件夹中使用 Laravel 运行,那么对你的 htaccess 文件进行此更改可能会使其不再在你的 localhost 开发环境中工作。
对此的一种解决方案是不使用 .htaccess 文件,而是在您的域的虚拟主机配置文件中包含重写规则。这样做的能力将取决于您的托管。
该解决方案还具有从我们的应用程序代码存储库中删除服务器配置(而不是应用程序配置)的好处
编辑
这是 OP 使用的最终分辨率,因为它不完全符合我的建议:
Options -MultiViews
RewriteEngine On
# Rewrite to "www" version
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# Add -d check to ensure only rewrite if url
# is not an existing directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]