Mod-Rewrite

如何使子目錄成為 Web 域或 localhost 的文件根目錄

  • April 15, 2012

abc在文件根目錄中有一個子目錄/var/www/html

我希望能夠any_file.html通過在瀏覽器中鍵入來執行子目錄中的任何文件:

localhost/any_file代替localhost/abc/any_file.htmlmy_domain.com/any_file代替my_domain.com/abc/any_file.html

我試著寫httpd.conf

<Directory "/var/www/html/abc">
RewriteEngine On
RewriteBase /
RewriteRule %{REQUEST_FILENAME} %{REQUEST_FILENAME}\.html
</Directory>

但它不起作用。Options FollowSymLinks被啟動<Directory>所以我相信我不需要再寫這個了。有誰知道為什麼以及如何解決它?謝謝。

**更新:**我有另一個子目錄efg,我需要能夠通過 localhost 訪問它。

在為域聲明 Vhost 時,需要添加:

<VirtualHost *:80>
DocumentRoot /var/www/html/abc
    <Directory />
         *your options*
   </Directory>

</VirtualHost>

現在你的/將是/var/www/html/abc

如果你的文件結構是這樣的:

/
-abc
-edf

您現在將預設訪問 abc 文件夾。如果您還想訪問 edf 文件夾,您有兩種選擇:

  • 為 documentroot 為 edf 的子域創建另一個虛擬主機
  • 將 edf 文件夾符號連結到 abc

符號連結非常簡單(ln 命令)。要創建另一個虛擬主機,您可以在sites-available/文件夾中創建一個新文件或在您的底部添加這些條目sites-available/default

DocumentRoot /var/www/html/efg 伺服器名 efg.mydomain.com

如果您創建了一個新文件,則需要執行:

a2ensite filename

並重新啟動apache。現在,當您訪問子域時(不要忘記將其添加到您的 dns 伺服器)。它將使用 efg 作為它的文件根目錄。

引用自:https://serverfault.com/questions/379585