123-reg.co.uk网站和apache mod_rewrite

时间:2014-08-28 00:44:12

标签: php apache .htaccess mod-rewrite

嗨,这是我第一次在这里问一个问题所以如果我的问题不明确或者我的代码不正确,那么对我来说有点容易大声笑。我目前上传了我的新php mvc网站到123-reg.co.uk,我使用apache mod_rewrite和路由器类。它在我的本地主机上运行时效果很好但是当它处于活动状态时,mod_rewrite被忽略并且控制器无法被识别,例如,如果我键入http://www.examplewebsite.co.uk,则家庭控制器会像它应该加载但是如果我尝试加载不同的控制器,例如{ {3}}它也是我的服务器错误404页面。我一直试图修复这几天没有成功,我做了一些研究,123-reg.co.uk支持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软件包时。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

这值得一试;将其添加为RewriteEngine On

上方的第一行
Options +FollowSymlinks  

来源:http://forum.modrewrite.com/viewtopic.php?f=4&t=2222

我对你的RewriteBase不太确定,也许它应该是

RewriteBase /  

而不是拥有完整的网址?