URL重写不适用于共享主机

时间:2013-07-09 16:50:43

标签: php apache mod-rewrite url-rewriting

我有一个非常简单的站点来测试我的在线主机上的url重写,因为我的原始应用程序在我的本地WampServer上工作正常,但没有与我的在线主机一起工作。

这是我的代码:

的index.php:

    <?php

    $p = $_GET['p'];

    $pages = array (

        'home'      => 'home.php',
        'about'     => 'about.php',
        'contact'   => 'contact.php'

    );

    if (isset($pages[$p]))  $page = $pages[$p];

    else                            $page = 'home.php';

    include $page;

?>



<!doctype html>

<html>

    <head></head>

    <body>

        <?php echo $body; ?>

        <br /><br /><br />

        <a href="http://newcryo.com/">HOME</a> - <a href="http://newcryo.com/about/">ABOUT</a> - <a href="http://newcryo.com/contact/">CONTACT</a>

    </body>

</html>

home.php:

<?php

    $body = '

        <h1>Home</h1>

        This is the home page

    ';

?>

about.php:

<?php

    $body = '

        <h1>About</h1>

        This is the about page

    ';

?>

contact.php:

<?php

    $body = '

        <h1>Contact</h1>

        This is the contact page

    ';

?>

htaccess的:

Options +FollowSymLinks

RewriteEngine On



# home
RewriteRule ^$ index.php?p=home [L]

# other pages
RewriteRule ^([^/\.]+)/$ index.php?p=$1 [L]

现在,当网址为&#34; http://newcryo.com/&#34;它显示了主页内容。

但是当&#34; http://newcryo.com/about/&#34;或&#34; http://newcryo.com/contact/&#34;它没有显示任何内容,它打开about.php或contact.php直接不在index.php内,如主页

两者都应翻译为&#34; http://newcryo.com/index.php?p=about&#34;但在这里它呈现为&#34; http://newcryo.com/about.php&#34;

我的本​​地主机是WampServer,PHP 5.4.3 / Apache 2.2.22 我的远程主机是一个OVH perso共享主机,PHP 5.4 / Apache 2.2.20

有什么建议吗? 感谢。

1 个答案:

答案 0 :(得分:2)

MultiViews可能是个问题。

将您的选项更改为:

Options +FollowSymLinks -MultiViews