Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 将URL重定向到ip/子文件夹而不更改URL_.htaccess_Url_Redirect_Wamp_Moodle - Fatal编程技术网

.htaccess 将URL重定向到ip/子文件夹而不更改URL

.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.

我有一个带有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的内容更改为:

<?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开头。通过这种方式,我们可以防止规则自身匹配,这将导致无休止的循环
  • 如果步骤2为真,那么我们将url重写为
    /moodle/$1
    <代码>$1在步骤1中被第一个捕获组替换。标志
    [L]
    停止此循环的重写,缺少
    [R]
    标志将使其成为内部重写(而不是外部重定向)
  • 在下一个循环中,它将再次尝试执行所有这些步骤,但现在在步骤2失败。内部重写的url已以
    /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]