【问题标题】:Redirect URL to ip/sub folder without changing url将 URL 重定向到 ip/sub 文件夹而不更改 url
【发布时间】:2014-03-02 07:55:19
【问题描述】:

我有一个带有 WAMP 的本地 Windows 服务器,并且我已经在该服务器上的 www 文件夹中安装了 moodle。

所以你可以从这里访问moodle:78.93.44.123/moodle

我有一个 Hostgator 的 cPanel 帐户。

我希望我的学生通过以下方式从校外访问 moodle 网站:moodle.mcst.edu.sa 而不是 78.93.44.123/moodle。

即我不希望他们看到 IP 地址。 因此,我在 cPanel 的高级 DNS 区域编辑器中添加了一条 A 记录,如下所示:

moodle.mcst.edu.sa => 78.93.44.123

这会将 URL moodle.mcst.edu.sa 重定向到服务器主页 (www/index.php)。 实际上,我想重定向moodle.mcst.edu.sa => 78.93.44.123/moodle

所以,我将 www/index.php 的内容更改为:

<?php
header( 'Localhost: /moodel' );
?>

这很好用。它重定向:moodle.mcst.edu.sa => 78.93.44.123/moodle

但问题是:网址更改为: moodle.mcst.edu.sa => 78.93.44.123/moodle

这是我不想要的。我不希望用户在地址栏中看到 IP。

如何防止 URL 更改?我应该使用 .htaccess 文件吗?如何使用? 我已经完成了任何 rwong 步骤?

请帮帮我

谢谢


注意:我在 www/moodle/config.php 中:

$CFG->wwwroot = 'http://78.93.44.123/moodle';

【问题讨论】:

  • 你不能在内部重定向不同的域/IP,它会改变 URL。
  • .htaccess 文件怎么样。如何使用它来防止更改 IP?
  • 如果将该配置行更改为 $CFG-&gt;wwwroot = 'http://moodle.mcst.edu.sa/moodle'; 会发生什么?
  • 网址变成:moodle.mcst.edu.sa/moodle,我不想要。我希望它像:moodle.mcst.edu.sa
  • 至少你的解决方案@Sumurai8隐藏了IP,但问题仍然没有完全解决。

标签: .htaccess url redirect wamp moodle


【解决方案1】:

我不确定 moodle 如何确定您输入的网址。您可以尝试以下方法(但我无法测试它是否真的有效):

将您的配置设置为$CFG-&gt;wwwroot = 'http://moodle.mcst.edu.sa';

.htaccess 文件放入您的 www-root 并添加以下内容:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/moodle
RewriteRule ^(.*)$ /moodle/$1 [L]

这是mod_rewrite 的规则。

  1. 它首先检查主机之间和查询字符串之前的url(example.com/asdf?qwer=1中的asdf)是否可以被正则表达式^(.*)$匹配。这对于任何 url 都是正确的,这可能不会让您感到惊讶。整个 url 存储为第一个捕获组(因为括号;它有 preg-like syntax)。
  2. 然后检查所有条件是否为真。 %{REQUEST_URI} 是我们在步骤 1 中匹配的 url 的一部分,但带有前缀斜杠。我们检查它是否已经以 /moodle 开头。这样我们可以防止规则匹配自身,从而导致无限循环。
  3. 如果第 2 步为真,那么我们将 url 重写为/moodle/$1$1 被步骤 1 中的第一个捕获组替换。标志 [L] 在此循环中停止重写,并且缺少 [R] 标志将使其成为内部重写(而不是外部重定向)。
  4. 下一个循环它会再次尝试执行所有这些步骤,但它现在将在第 2 步失败。内部重写的 url 已经以 /moodle 开头,因此条件为 false。

【讨论】:

  • 谢谢@Sumurai8。我照你说的做了。您现在可以在:moodle.mcst.edu.sa 上进行测试。实际上它只适用于moodle主页。当我点击 moodle 网站中的任何链接时,URL 将更改为 moodle.mcst.edu.sa/moodle
  • 我已经从配置行中删除了moodle。在那种情况下它仍然有效吗?我猜它用它来制作任何网址。
  • Thaaaaaaaaaaaaaaaank yooooou Sumurai8 :) 它运行良好
  • 我已经添加了一个解释它的作用,以及一些指向进一步阅读材料的链接。
  • 当我尝试访问 www 文件夹内同一服务器上的其他网站时,请@Sumurai8 我收到 403 错误禁止!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2013-05-31
  • 2011-01-02
相关资源
最近更新 更多