【问题标题】:htaccess access to folders via subdomainshtaccess 通过子域访问文件夹
【发布时间】:2020-07-22 11:39:08
【问题描述】:

我正在尝试在 .htaccess 中制定规则,以通过子域别名(带参数)访问文件夹。

sub.example.com => example.com/sub/index.php
sub.example.com/language-fr => example.com/sub/inner_page.php?lang=fr

我找到了一个带有参数的子域的简单解决方案。

RewriteCond %{HTTP_HOST} ^sub.example.com
RewriteRule ^(.*)$ /sub/inner_page.php?lang=$1 [L,NC,QSA]

这可以正常工作。当我浏览到 sub.example.com/language-fr 时,我得到了 example.com/sub/inner_page.php?lang=fr 的内容 但是当我浏览 sub.example.com 时这不起作用,我看到错误 ERR_TOO_MANY_REDIRECTS。

请告诉我如何正确指定访问 sub.example.com 和带有 sub.example.com/language-fr 等参数的内部页面的规则?

【问题讨论】:

  • 您是否有其他关于example.com/sub/ 的重写规则规则可以帮助我们解释(在这个htaccess 文件或sub 目录中)?此外,正如我看到您重定向到inner_page 的规则一样,正则表达式条件也应该适用于sub.example.com,因为(.*) 也匹配为空。也许你可以试试^(.+)$
  • 我没有其他的重写规则。也尝试过 ^(. +)$ ,但结果相同。我不明白问题出在哪里。
  • 好的,然后进行其他 2 项测试:执行 example.com/sub/ 而不是使用您想要的子域线索?第二:当您删除重定向到inner_page.php 的规则时,它是否可以访问sub.example.com
  • 当我执行 example.com/sub/ 时,它可以正常工作。当我删除规则时,我会看到来自主域 example.com 的内容。
  • 也许我需要在子文件夹的.htaccess中添加一些规则?

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

我实际上无法详细解释为什么您在此处输入重定向循环..但这应该是一个可行的解决方案。

RewriteCond 一个接一个地使用 AND 相加(除非你使用 [OR] 标志)

我会在%{REQUEST_URI} 上使用它来防止每个案例都被另一个案例检测到(^$ 表示“空”):

RewriteCond %{HTTP_HOST} ^sub.example.com
RewriteCond %{REQUEST_URI} !^$
RewriteRule ^(.+)$ /sub/inner_page.php?lang=$1 [L,NC,QSA]

RewriteCond %{HTTP_HOST} ^sub.example.com
RewriteCond %{REQUEST_URI} ^$
RewriteRule ^$ /sub/index.php [L,NC,QSA]

【讨论】:

  • 很奇怪,但是当我访问 sub.example.com 时,它仍然会获得无限重定向。我无法理解导致错误 ERR_TOO_MANY_REDIRECTS 的原因。
  • 好的,我会在本地服务器上做一些测试然后回来
猜你喜欢
  • 2016-01-18
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 2022-06-28
  • 2014-07-21
  • 2019-04-17
相关资源
最近更新 更多