首页 > 解决方案 > 如何创建 RewriteRule 以同时使用主域和子域?

问题描述

我的服务器有 IPv6 地址,但由于 IPv6 在某些网络中无法正常工作,我创建了一个只有 IPv4 地址的子域,它指向与我的服务器相同的 IP。这一切都是为了服务于我的 Nextcloud 安装。

在服务器上,两个名称(server.org 和 subdomain.server.org)都来自同一个目录树。除了 RewriteRules 之外,它们都工作正常。

我在 .htaccess 上有 RewriteRules 来处理 .well-known/carddav 等事情,这些规则在我的主域上运行良好,但不适用于子域。这是 .htaccess 文件:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^\.well-known/host-meta /nextcloud/public.php?service=host-meta [QSA,L]
  RewriteRule ^\.well-known/host-meta\.json /nextcloud/public.php?service=host-meta-json [QSA,L]
  RewriteRule ^\.well-known/webfinger /nextcloud/public.php?service=webfinger [QSA,L]
  RewriteRule ^\.well-known/carddav /nextcloud/remote.php/dav/ [R=301,L]
  RewriteRule ^\.well-known/caldav /nextcloud/remote.php/dav/ [R=301,L]
</IfModule>

我曾尝试将这些 RewriteRules 添加到/etc/apache2/sites-enabled/subdomain-le-ssl.conf,但这也没关系。我只是得到 404 未找到。

标签: mod-rewritesubdomainnextcloud

解决方案


怀特先生的评论为答案提供了线索。

关于 .htaccess 覆盖,“AllowOverride All”行仅在主域的 conf 文件中。当我也将它添加到子域的 conf 文件时,RewriteRules 开始工作。谢谢!


推荐阅读