【问题标题】:123-reg.co.uk website and apache mod_rewrite123-reg.co.uk 网站和 apache mod_rewrite
【发布时间】:2014-08-28 00:44:11
【问题描述】:

您好,这是我第一次在这里提出问题,所以如果我的问题不清楚或我的代码不正确,请对我放松一点,哈哈。我目前将我的新 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,我觉得我失去了它哈哈,任何帮助将不胜感激,在此先感谢.

这是路由器类:

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这一行,这样行吗?
  • 我试过了,还是不行,快把我逼疯了,这是整个过程中最难的部分,哈哈

标签: php apache .htaccess mod-rewrite


【解决方案1】:

这值得一试;将此添加为RewriteEngine On上方的第一行

Options +FollowSymlinks  

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

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

RewriteBase /  

而不是完整的网址?

【讨论】:

  • 我也试过了,刚刚又试了一次还是没有成功
  • 您是否尝试过询问他们的技术支持?我在另一个问题上看到他们的一位代表告诉 OP 联系他们寻求帮助。
  • 也许RewriteBase http://www.examplewebsite.co.uk/ 可以代替前导斜杠?
  • 是的,我已经联系了他们的支持团队,但我不知道他们需要多长时间才能回复,所以我想我会在此期间询问。 Joe T,我现在就试试
  • Joe T,我刚刚尝试过,但也没有用。这让我很困惑哈哈,这是我在整个自学网络开发过程中最沮丧的一次哈哈
猜你喜欢
  • 2011-12-18
  • 1970-01-01
  • 2016-01-19
  • 2010-11-09
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
相关资源
最近更新 更多