apache重寫將資料夾分配給域

apache重寫將資料夾分配給域

請指出我正確的方向。

我正在使用 .htaccess 在我的伺服器上設定網域。

我需要domain.com 來存取/domain.com/* 資料夾中的檔案。如果檔案不存在,則載入 /domain.com/index.php ,domain.com/images/image.jpg 應載入檔案:/domain.com/images/image.jpg

一件事是它應該加載所有內容,而不向瀏覽器發送 302“文件已移動”通知。

感謝您的幫忙!

答案1

如果您有很多網域,或者即使您只有幾個網域,但它們都具有或多或少相同的配置,那麼這種情況動態海量虛擬主機是為.類似這樣的內容將出現在您的httpd.conf文件中(或包含在 中的文件中httpd.conf):

UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/htdocs
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/access_log combined

我也建議

DirectoryIndex index.php

index.php如果用戶端未指定檔案名,則將檔案載入到目錄中。

答案2

您應該為要對應到檔案路徑的每個網域建立虛擬主機,並將每個虛擬主機的 DocumentRoot 指定為檔案系統上的實際路徑。然後,您需要確保擁有預設虛擬主機,以便對未設定的網域的所有其他請求都將使用預設虛擬主機。最後,您需要建立一個自訂 404 錯誤處理程序,以便如果所要求的文件不存在,它將提供替代內容。您需要建立一個名為 custom_404.php 的 php,它顯示一個通用訊息和您的 /images/image.png。

# Default Domain (Undefined domains will fall back to this)
<VirtualHost *:80>
    ServerAlias www.defaultdomain.com
    DocumentRoot /var/www/default/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/default/logs/error_log
    CustomLog /var/www/default/logs/access_log combined
</VirtualHost>

# domain1.com
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /var/www/domain1.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain1.com/logs/error_log
    CustomLog /var/www/domain1.com/logs/access_log combined
</VirtualHost>

# domain2.com
<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/domain2.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain2.com/logs/error_log
    CustomLog /var/www/domain2.com/logs/access_log combined
</VirtualHost>

希望這可以幫助!

-凱文

答案3

您需要使用虛擬主機來組織它。這是一個範例虛擬主機檔案。

<VirtualHost *:80>
    ServerName example.net
    ServerAlias www.example.net
    ServerAdmin [email protected]
    DocumentRoot /var/www/vhosts/www.example.net/html
    ErrorLog /var/www/vhosts/www.example.net/logs/errors.log
    Customlog /var/www/vhosts/www.example.net/logs/access.log combined

</VirtualHost>

將此檔案放在 /etc/httpd/conf.d/ 中並命名為 vhost_example.net.conf

然後在 /etc/httpd/conf/httpd.conf 中添加,例如最後一行

包含/etc/httpd/conf.d/vhost_example.net.conf

(或只是包含 /etc/httpd/conf.d/*.conf )並在 httpd.conf 檔案中,記住將此行取消註釋

名稱虛擬主機 *:80

相關內容