嗨,這是我第一次在這裏問一個問題,所以如果我的問題不清楚或我的代碼不正確大聲笑,對我有點容易。我目前上傳我的新的php mvc網站到123-reg.co.uk和即時通訊使用Apache的mod_rewrite與路由器類。它適用於當我的本地主機即時通訊,但是當它的生活,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]
更新!
任何其他人都有這個相同的問題,它不工作的原因是因爲123-reg.co.uk不支持他們的Windows軟件包上的mod_rewrite,但在那裏做的Linux軟件包,它本來是好的他們說,當我註冊Windows軟件包,但現在切換到Linux軟件包。謝謝你們的幫助!
刪除'RewriteBase'行,它工作嗎? – 2014-08-28 00:48:46
我已經嘗試過,它仍然不工作,它使我瘋狂,這一直是整個過程中最難的部分lol – Wisd0m 2014-08-28 00:51:23