让Apache在浏览器的地址栏中显示不同的index.html

时间:2010-06-16 14:25:42

标签: apache .htaccess apache-config

我的共享托管服务器上有以下foloder树:

www.somesite.com
|
|_ public_html (document folder)
    |_ .htaccess (Apache file)
    |_ index.html (page shown by server now when someone looks for www.somesite.com)
    |
    |_ site_editor (folder)
    |   |_login.html (site editor control panel)
    |   |_file1.php
    |   |_file2.php
    |   |_ ...
    |
    |_ website (folder)
        |_ index.html (website HOME PAGE)
        |_ page1.html
        |_ page2.html
        |_ etc.

现在有人在寻找www.somesite.com时,网络服务器会在public_html文件夹中查找index.html。

  1. 我希望网页服务器在有人查找www.somesite.com时显示website/index.html ,我希望他的浏览器栏只显示{{ 1}} 而非www.somesite.com/index.html

  2. 当有人查找www.somesite.com/website/index.html

  3. 时,我还希望网络服务器显示site_editor/login.html

    是否可以通过某种方式设置.htaccess文件来完成这两项任务?

    谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,以下内容应该有效,尽管我没有真正测试过:

RewriteEngine On
RewriteBase /
# Rewrite everything that's not site_editor or already rewritten
# to the website folder
RewriteRule !^site_editor(/.*)?$ -          [C]
RewriteRule !^website(/.*)?$     -          [C]
RewriteRule  ^(.*)$              website/$1 [PT,QSA,L]
# Rewrite a request to site_editor/ to site_editor/login.html
RewriteRule  ^site_editor/$      site_editor/login.html

如果他们愿意,人们仍然可以访问www.somesite.com/website/index.html。我认为可能有一个解决方法,但由于.htaccess RewriteRules的应用方式,所以要做到正确是很棘手的。如果我记得它是什么我会更新我的答案。