.htaccess 将URL重定向到ip/子文件夹而不更改URL
我有一个带有WAMP的本地windows服务器,我已经在www文件夹中安装了moodle 所以你可以从这里访问moodle:78.93.44.123/moodle 我在Hostgator有一个cPanel帐户 我希望我的学生通过moodle.mcst.edu.sa而不是78.93.44.123/moodle从学院外访问moodle网站 i、 我不想让他们看到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的内容更改为:.htaccess 将URL重定向到ip/子文件夹而不更改URL,.htaccess,url,redirect,wamp,moodle,.htaccess,Url,Redirect,Wamp,Moodle,我有一个带有WAMP的本地windows服务器,我已经在www文件夹中安装了moodle 所以你可以从这里访问moodle:78.93.44.123/moodle 我在Hostgator有一个cPanel帐户 我希望我的学生通过moodle.mcst.edu.sa而不是78.93.44.123/moodle从学院外访问moodle网站 i、 我不想让他们看到IP地址。 因此,我在cPanel的高级DNS区域编辑器中添加了一条A记录,如下所示: moodle.mcst.edu.sa=>78.93.
<?php
header( 'Localhost: /moodel' );
?>
我不确定moodle如何确定您键入的url。您可以尝试以下方法(但我无法测试它是否真的有效): 将配置设置为
$CFG->wwwroot=http://moodle.mcst.edu.sa';代码>
将.htaccess
文件放入您的www根目录中,并将以下内容添加到其中:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/moodle
RewriteRule ^(.*)$ /moodle/$1 [L]
这是我们的规则
它首先检查主机与查询字符串(example.com/asdf?qwer=1
中的asdf
)之前的url是否可以与regex^(.*)$
匹配。对于任何url来说,这都是正确的,这可能不会让您感到惊讶。整个url被存储为第一个捕获组(由于括号的缘故,它有)
然后检查所有条件是否为真<代码>%{REQUEST_URI}
是我们在步骤1中匹配的url的一部分,但带有前缀斜杠。我们检查它是否以/moodle开头。通过这种方式,我们可以防止规则自身匹配,这将导致无休止的循环
/moodle/$1
<代码>$1在步骤1中被第一个捕获组替换。标志[L]
停止此循环的重写,缺少[R]
标志将使其成为内部重写(而不是外部重定向)李>
/moodle
开头,因此条件为false您不能在内部重定向不同的域/ip,因为它会更改URL。那么.htaccess文件呢。我如何使用它来防止更改IP?如果您将配置行更改为
$CFG->wwwroot=http://moodle.mcst.edu.sa/moodle';代码>?URL变成:moodle.mcst.edu.sa/moodle,我不想要它。我希望它是这样的:moodle.mcst.edu.saa至少你的解决方案@Sumurai8隐藏了IP,但问题仍然没有完全解决。谢谢@Sumurai8。我照你说的做了。您现在可以在上进行测试:。实际上,它只在moodle主页上起作用。当我点击moodle网站中的任何链接时,URL会变为“我已从配置行中删除moodle”。在那种情况下还能用吗?Thaaaaaaank Yoooou Sumurai8:)它工作得很好我已经添加了一个解释,还有一些进一步阅读材料的链接。请@Sumurai8当我试图访问www文件夹内同一服务器上的其他网站时,我得到403错误禁止!
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/moodle
RewriteRule ^(.*)$ /moodle/$1 [L]