htaccess - 将所有流量重定向到子文件夹

时间:2017-03-21 14:29:25

标签: apache .htaccess mod-rewrite

我想将所有流量重定向到子目录,所以请求如下:

a)http://localhost/app/index.php/app/ctrl
b)http://localhost/app/media/image.jpg

将被重定向(对用户不可见)到:

a)http://localhost/app/public/index.php/app/ctrl
b)http://localhost/app/public/media/image.jpg

正如您所看到的,我的应用不是直接在根目录中,而是在子目录中。

这是我的文件结构:

/
    app/
        public/
            media/
               image.jpg
            index.php
        source/
        .htaccess

    otherapp/

我在/app/.htaccess工作 下面的IMO代码应该可以工作,不幸的是我找不到404

RewriteRule ^(.*)% "public/$1"

的access.log:

::1 - - [21/Mar/2017:15:23:21 +0100] "GET /app/index.php/app/ctrl HTTP/1.1" 200 6681 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0"    
::1 - - [21/Mar/2017:15:23:30 +0100] "GET /app/media/image.jpg HTTP/1.1" 200 6681 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0"

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

app/.htaccess内使用此规则:

RewriteEngine On

RewriteRule ^(?!public/).*$ public/$0 [L,NC]

(?!public/)是否为前瞻性,以检查URI是否已经没有说明/app/public/