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

时间:2016-04-15 19:19:27

标签: apache .htaccess redirect mod-rewrite

我有.htaccess重定向对特定子目录的所有访问权限。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>

这是我的目录结构:

/public/index.php
/test.php
/.htaccess

如果我访问http://domain.com/,则通过将所有内容发送到/public/index.php来正常工作。但如果我访问http://domain.com/test.php,则会运行test.php。但我需要避免访问任何根文件。

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

1 个答案:

答案 0 :(得分:0)

尝试这个简单的规则:

RewriteEngine On

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