在 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/.htaccess即可DirectorySlash Off- 这将应用于sub对子域的所有请求。(假设您不通过不同的主机名访问同一个子目录。如果愿意,您可以阻止这种情况。)

/sub/.htaccess文件也是您根据要求实现 #3 的地方。

.htaccess文件只是将对sub子域的所有请求重写到/sub子目录中。


在旁边:由于您在 ServerFault 上询问了这个问题,因此通常假设您完全控制了服务器。在这种情况下,最好sub在自己的 vHost 容器中配置此子域,该容器直接指向/sub子目录(或理想情况下在主域目录树之外的某个位置)。在这种情况下,您不需要实现要求中的 #2,只需DirectorySlash Off为整个子域进行设置即可。

相关内容