我有一个带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 =&gt; 78.93.44.123/moodle
但问题是:网址更改为: moodle.mcst.edu.sa =&gt; 78.93.44.123/moodle
我不想要。我不希望用户在地址栏中看到IP。
如何防止更改网址?我应该使用.htaccess文件以及如何使用? 我做过的任何一个步骤?
请帮帮我
由于
注意:在www / moodle / config.php中我发誓:
$CFG->wwwroot = 'http://78.93.44.123/moodle';
答案 0 :(得分:2)
我不确定moodle如何确定您输入的网址。您可以尝试以下方法(但我无法测试它是否真的有效):
将您的配置设为$CFG->wwwroot = 'http://moodle.mcst.edu.sa';
将.htaccess
文件放入www-root并将以下内容添加到其中:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/moodle
RewriteRule ^(.*)$ /moodle/$1 [L]
这是mod_rewrite的规则。
asdf
中的example.com/asdf?qwer=1
)之间的网址是否可由正则表达式^(.*)$
匹配。对于任何网址都是如此,这可能不会让您感到惊讶。整个网址存储为第一个捕获组(因为括号;它有preg-like syntax)。%{REQUEST_URI}
是我们在步骤1中匹配的网址的一部分,但前缀为斜杠。我们检查是否已经开始使用/ moodle。这样我们就可以防止规则自身匹配,从而导致无限循环。/moodle/$1
。在步骤1中,$1
被第一个捕获组替换。标志[L]
停止重写此循环,缺少[R]
标志将使其成为内部重写(而不是外部重定向)。 /moodle
开头,因此条件为false。