2014-03-02 100 views
1

我有一個帶WAMP的本地Windows服務器,並且我已經在該服務器上的www文件夾中安裝了moodle。將URL重定向到ip/sub文件夾而不更改url

所以,你可以從這裏訪問的Moodle:78.93.44.123/moodle

我有一個的cPanel賬戶,HostGator的。

我希望我的學生通過moodle.mcst.edu.sa而不是78.93.44.123/moodle訪問moodle網站。

即我不希望他們看到IP地址。 所以,我在的cPanel增加了一個A記錄在高級DNS區域編輯器,如下所示:

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

:從URL變化我不想要。我不希望用戶在地址欄中看到IP。

如何防止URL更改?我應該使用.htaccess文件嗎? 我已經完成的任何一步?

請幫助我

感謝


注:WWW/Moodle的/ config.php文件我VAVE:

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

你不能在內部重定向不同的域/ IP,它會改變URL。 – Prix

+0

.htaccess文件怎麼樣?我如何使用它來防止更改IP? –

+0

如果將配置行更改爲'$ CFG-> wwwroot ='http://moodle.mcst.edu.sa/moodle';'?會發生什麼? – Sumurai8

回答

1

我不確定的Moodle如何確定哪個網址您鍵入。你可以嘗試以下(但如果它的實際工作我無法測試):

設置你的配置,以$CFG->wwwroot = 'http://moodle.mcst.edu.sa';

將一個.htaccess文件在您的www根,並添加以下代碼行:

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

這是mod_rewrite的規則。

  1. 它首先檢查如果主機之間以及在查詢字符串(asdfexample.com/asdf?qwer=1)之前的URL可以通過正則表達式^(.*)$匹配。對於任何網址來說,這不會讓您感到驚訝。整個url存儲爲第一個捕獲組(由於括號;它有preg-like syntax)。
  2. 然後檢查是否所有條件都是真的。 %{REQUEST_URI}是我們在步驟1中匹配的網址的一部分,但帶有前綴斜槓。我們檢查它是否不是已經以/ moodle開頭。這樣我們就可以防止規則匹配自己,這會導致無限循環。
  3. 如果步驟2爲真,那麼我們將URL重寫爲/moodle/$1$1在步驟1中被第一個捕獲組替換。標記[L]在此週期停止重寫,並且缺少[R]標誌將使其成爲內部重寫(而不是外部重定向)。
  4. 下一個週期它將嘗試再次執行所有這些步驟,但現在將在步驟2上失敗。內部重寫的URL已從/moodle開始,因此條件爲false。
+0

謝謝@ Sumurai8。我做了你所說的。你現在可以測試它:http://moodle.mcst.edu.sa。實際上它只能在moodle主頁上使用。當我點擊我的moodle網站上的任何鏈接時,URL變爲http://moodle.mcst.edu.sa/moodle –

+0

我已經從配置行刪除了moodle。它在這種情況下仍然有效嗎?我想它會使用它來製作任何網址。 – Sumurai8

+0

Thaaaaaaaaaaaaaaaaaank yooooou Sumurai8 :)它工作的很好 –