在 Apache 上,如何僅針對對特定子網域的請求關閉 DirectorySlash?

在 Apache 上,如何僅針對對特定子網域的請求關閉 DirectorySlash?

我想要由 Apache 提供服務我的子網域網站(例如sub.mydomain.com)的 URL沒有尾部斜線直接(無需外部重定向)指向基礎資料夾中的索引檔案。子網域請求在內部重定向到子資料夾。所有其他 URL 應該以正常的 Apache 方式運作,並外部重定向到斜線版本。

所有指令都必須放入我的 .htaccess 檔案中。為此,我計劃執行以下操作:

  1. 關閉DirectorySlash請求sub.mydomain.com/...
  2. 將請求重寫sub.mydomain.com/…/sub/...
  3. 重寫無斜線目錄 URL 以 /sub/...取得index.html底層目錄內部

我很清楚如何執行 2. 和 3.,但是我該如何發出DirectorySlash off 僅適用於請求sub.mydomain.com,但不是www.mydomain.comother.mydomain.com

答案1

聽起來,您的sub子網域會對應到與主網域和所有其他子網域(wwwother等)相同的目錄

但是,如果對子網域的所有請求sub都在內部重寫為/sub 子目錄那麼您大概可以建立另一個您設定的.htaccess位置- 然後這適用於對子網域的所有請求。 (假設您不會透過不同的主機名稱存取相同的子目錄。如果您願意,可以阻止這種情況。)/sub/.htaccessDirectorySlash Offsub

/sub/.htaccess文件也是您將在您的需求中實現 #3 的位置。

.htaccess檔案只是將所有sub對子網域的請求重寫到/sub子目錄中。


在旁邊:由於您在 ServerFault 上問這個問題,因此通常假設您擁有伺服器的完全控制權。在這種情況下,最好sub在其自己的 vHost 容器中配置此子域,該容器直接指向/sub子目錄(或理想情況下主域目錄樹之外的某個位置)。在這種情況下,您不需要實作要求的#2,只需DirectorySlash Off為整個子網域進行設定。

相關內容