2017-08-31 39 views
0

這是我如何定義我的基地網址:重定向的網站只有一個域中使用掛鉤CI

$config['base_url'] = 'http://royalarcdevelopments.ca/'; 

會發生什麼情況是,如果我使用路徑http://royalarcdevelopments.caroyalarcdevelopments.ca打開這個網址,它加載罰款兩!

但是,當我使用URL www.royalarcdevelopments.ca加載它,我收到一個錯誤:

現在我已經做了一些研究,發現了http://royalarcdevelopments.cawww.royalarcdevelopments.ca在邏輯上是兩個不同的領域,所以我開發的,我可以創造一個方式這裏控制器鉤子和檢查,如果我的網站使用www訪問它應該重定向到http域路徑是我的代碼

<?php 
class Pre_controller_uneeb { 

    function redirect(){ 

     $name=$_SERVER["HTTP_HOST"]; 
     $return_path=$_SERVER["REQUEST_URI"]; 
     if (strpos($name, 'www') !== false) { 
     header("Location: http://royalarcdevelopments.ca$return_path"); 
     } 

    } 
} 
?> 

這個邏輯完美的作品吧!無論在我使用的網站www它將我重定向到http保持uri相同和最終結果用戶不覺得任何區別,我沒有得到任何cross domain origin policy errors現在唯一的問題是鉤子硬編碼你可以看到我必須手動鍵入完整路徑我試圖得到base_url()裏面的鉤子,但它返回一個錯誤是否有任何方法使其通用?

此外這是我的htaccess現在看起來的樣子!

RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
+0

正如評論:我不這樣做在PHP中。如果您使用CPanel,Plesk或任何其他服務器管理包,則通常可以在此配置它。您的PHP代碼應該最好永遠不會產生錯誤,只是因爲使用了另一個子域。如果你使用Apache,你可以在.htacces文件中配置它。 –

+0

難道你沒有訪問鉤子裏的$ config變量嗎?如果你不這樣做,那麼你可以使用「global $ config;」以獲取訪問權限並使用$ config進行重定向。但是我同意KIKO的說法,可能有更好的方法來做到這一點。 –

+0

我怎樣才能使用htaccess?我已經添加了htaccess代碼也 –

回答

0

在HT Access中實現此類事情實際上到達PHP之前更有效率。

RewriteEngine On 
# If the hostname is NOT www.domain.com 
RewriteCond %{HTTP_HOST} !^www\.domain\.co\.uk$ 
# 301 redirect to the same resource on www.domain.com 
RewriteRule (.*) http://www.domain.co\.uk/$1 [L,R=301] 
+0

我已經停用了鉤現在,但它是帶我到https://sedo.com/uk/?partnerid=48623當我加載網站 –

相關問題