htaccess - 重定向到子文件夹但保持对上级文件夹

时间:2016-11-01 18:08:03

标签: apache .htaccess redirect

这是我服务器中的项目文件夹结构:

-- mainfolder
   -- folder1
      -- file1.js
      -- file2.js
   -- folder2
      -- file3
      -- file4
      -- subfolder1
      -- subfolder2
      -- index.html

我需要设置.htaccess文件,以便www.example.com始终重定向到www.example.com/folder2我拥有index.html文件的位置。现在 index.html 中的folder2引用了 folder1 中的文件:

的index.html

...
<script src="../folder1/file1.js" > </script>
<script src="../folder1/file2.js" > </script>
...

我已尝试将此.htaccess配置始终重定向到/mainfolder/

RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !mainfolder/
RewriteRule (.*) /mainfolder/$1 [L]

但这样我总是应该输入www.example.com/mainfolder/folder2来访问我的网站。

有没有办法始终指向folder2,最重要的是,允许folder2中的文件访问folder1个文件?

我也试过这个:

RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !mainfolder/folder2/
RewriteRule (.*) /mainfolder/folder2/$1 [L]

但问题是我从index.html收到错误,因为它无法访问folder1中的文件,因为浏览器认为文档根目录是/mainfolder/folder2/,所以它不知道/mainfolder/folder1 1}}。

总之,我需要:

    输入/mainfolder/folder2/index.html; 后,
  • 访问www.example.com
  • 允许folder2中的文件访问folder1个文件。

P.S。我无法更改我的网络服务器的DocumentRoot,我只能编辑.htaccess文件。

由于

1 个答案:

答案 0 :(得分:2)

在我测试过的所有情况下,这个都适合我。希望能帮助到你。如果事情不对,请告诉我。

RewriteEngine On
RewriteRule ^folder1/(.*)$ /mainfolder/folder1/$1 [L]
RewriteRule ^$ /mainfolder/folder2/index.html [L]
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mainfolder/folder2/$1 [L]