2014-08-28 3 views
0

Привет, это мой первый вопрос, задающий вопрос здесь, поэтому немного поменяйте меня, если мой вопрос не ясен или мой код не прав lol. В настоящее время я загрузил свой новый веб-сайт php mvc на 123-reg.co.uk и im, используя apache mod_rewrite с классом маршрутизатора. Он отлично работает, когда im на моем локальном хосте, но когда он работает, mod_rewrite игнорируется, и контроллер не распознается, например, если я набираю http://www.examplewebsite.co.uk, то домашний контроллер загружается так, как должен, но если я пытаюсь загрузить другой контроллер, например, http://www.examplewebsite.co.uk/images, он тоже меня принимает страница ошибки сервера 404. Я пытался исправить это в течение нескольких дней без успеха, я провел некоторое исследование, и 123-reg.co.uk действительно поддерживает mod_rewrite, я чувствую, что я теряю его ха-ха, любая помощь будет принята с благодарностью, спасибо заранее ,123-reg.co.uk веб-сайт и apache mod_rewrite

Это класс маршрутизатор:

class Router { 

public function __construct() 
{ 
    if(empty($_GET['url'])) 
    { 
     Help::loadApplication('controllers','home'); 
     return new Home(); 
    } 
    elseif(isset($_GET['url'])) 
    { 
     $url = $_GET['url']; 
     $url = rtrim($url,'/'); 
     $url = filter_var($url,FILTER_SANITIZE_URL,true); 
     $url = explode('/',$url); 

     Help::loadApplication('controllers',$url[0]); 
     if(class_exists($url[0])) 
     { 
      $controller = new $url[0]; 

      if(isset($url[1])) 
      { 
       $methodName = $url[1]; 

       if(method_exists($controller, $methodName)) 
       { 
        $methodParams = (isset($url[2]) ? $url[2] : false); 
        $controller->{$methodName}($methodParams); 
       } 
      } 
     } 
     else 
     { 
      Help::loadApplication('controllers','home'); 
      return new Home(); 
     } 
    } 
} 

Это mod_rewrite:

RewriteEngine On 

RewriteBase /http://www.examplewebsite.co.uk 

Options -Indexes 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.*)$ index.php/?url=$1 [QSA,L] 

UPDATE !!

Любой, у кого есть эта же проблема, причина, по которой она не работает, связана с тем, что 123-reg.co.uk не поддерживают mod_rewrite в своем пакете Windows, но делают там пакет Linux, это было бы полезно для они заявляют, что когда я подписывался на пакет Windows, но теперь переключился на пакет Linux. Спасибо за помощь, ребята!

+0

удалите строку «RewriteBase», она работает тогда? – 2014-08-28 00:48:46

+0

Я пробовал это, и он все еще не работает, его вождение меня сумасшедшим, это была самая сложная часть всего процесса lol – Wisd0m

ответ

0

Это стоит попробовать; Добавьте это в качестве первой линии над RewriteEngine On

Options +FollowSymlinks 

источник: http://forum.modrewrite.com/viewtopic.php?f=4&t=2222

и я не уверен, что о вашем RewriteBase, может быть, это должно быть

RewriteBase/ 

вместо того, чтобы полный URL ?

+0

Я тоже пробовал, что я только что попробовал и еще не успел – Wisd0m

+0

ты пробовал спрашивая их техническую поддержку? Я видел по другому вопросу один из их представителей сказал OP обратиться к ним за помощью. –

+0

возможно 'RewriteBase http: // www.examplewebsite.co.uk /' будет работать вместо ведущей косой черты? –