php URL重写适用于apache,而不是litespeed服务器上的100%

时间:2016-12-10 11:26:55

标签: php .htaccess mod-rewrite url-rewriting litespeed

我在使用PHP脚本在新服务器上工作时遇到一些问题 - 我已经从apache转到了Litespeed服务器,我无法让小CMS在其上工作。

简而言之,.htaccess包含:

 ServerName www.domain.co.uk
ServerAlias domain.co.uk
DocumentRoot /home/domain/public_html/
<Directory  /home/ttedomainpublic_html/>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^domain.co.uk [NC]
            RewriteRule ^(.*)$ index.php [L]
    RewriteRule ^(.*) http://www.domain.co.uk/$1 [L,R=301]
    RewriteBase /
    RewriteRule ^(admin|content|css|images|img|non_public|pdf|renderers|scripts|sendmail|templates) - [L]
</Directory>

index.php包含:

<?php
include("non_public/config.php");

// Get the request URI
$requestUri = $_SERVER['REQUEST_URI'];
$requestUri = preg_replace("~^/~","",$requestUri);
$requestUri = str_replace("/","_",$requestUri);


// Make sure that we'll get the index
if(empty($requestUri)) $requestUri = "index";

if(file_exists(ROOT_PATH . "content/" . $requestUri))
{
// Include the header
include(ROOT_PATH . "templates/header.php");

// Check if there's a renderer
if(file_exists(ROOT_PATH . "renderers/" . $requestUri . ".php"))
{
    include(ROOT_PATH . "renderers/" . $requestUri . ".php");
}
else
    echo file_get_contents(ROOT_PATH . "content/" . $requestUri);

// Include the footer
include(ROOT_PATH . "templates/footer.php");
}

else
    echo file_get_contents(ROOT_PATH . "content/404");
?>

所以上面的内容应该从 content / 中保存的内容文件,模板中的一些内容和来自 renderers / 的一些基本内容。目录

我希望到目前为止有意义吗?这在Apache服务器上运行了好几年,但在Litespeed下无效。 当你去 www.domain.co.uk/notes 时,目前的最终结果只是一个404页面,因为很明显 www.domain.co.uk/notes/index.php 等不存在,服务器似乎无法将页面放在一起。

任何人都可以指出我正确的方向吗?

非常感谢......

1 个答案:

答案 0 :(得分:0)

尝试启用重写日志记录并访问该页面。重写日志应该解释重写规则中发生的事情。