Apache-2.4

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

  • April 1, 2022

由 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.comor發出請求other.mydomain.com

通過它的聲音,您的子域映射到與主域和所有其他子域(和等)sub相同的目錄www``other

但是,如果對子域的所有請求sub都在內部重寫到/sub 子目錄,那麼您大概可以創建另一個您設置的位置 - 然後這適用.htaccess於對子域的所有請求。(假設您也沒有通過不同的主機名訪問相同的子目錄。如果您願意,可以阻止這種情況。)/sub/.htaccess``DirectorySlash Off``sub

/sub/.htaccess文件也是您在需求中實施#3 的地方。

根文件只是將所有對子域的.htaccess請求重寫到子目錄。sub``/sub


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

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