Apache .htaccess:将访问重定向到子目录,但不允许访问根文件

Apache .htaccess:将访问重定向到子目录,但不允许访问根文件,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,我有一个.htaccess,它将所有访问重定向到特定的子目录 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ /public/$1 [L] </IfModule> 如果我访问http://domain.com/将所有内容发送到/public/index.php即可正常工作。但是如果我访问http://domain.com/test.php它运行test.php。但我需要避免访问任何

我有一个
.htaccess
,它将所有访问重定向到特定的子目录

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>
如果我访问
http://domain.com/
将所有内容发送到
/public/index.php
即可正常工作。但是如果我访问
http://domain.com/test.php
它运行
test.php
。但我需要避免访问任何根文件

这个脚本还有一个问题。如果我尝试调用一个不存在的文件,而不是将命令发送到
/public
并将其路由到自己的404错误(在
index.php
结构中定义),它将显示一个500错误。

尝试以下简单规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
RewriteRule !^public/index\.php$ public/index.php [L]
RewriteEngine On

RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
RewriteRule !^public/index\.php$ public/index.php [L]