Php包含mod_rewrite隐藏get变量问题的页面

时间:2015-10-14 09:23:44

标签: php apache .htaccess mod-rewrite

我无法让我的mod_rewrite工作,因此链接从http://domain.com/page?home.php转到http://domain.com/home

输入http://domain.com/时,主页包含正确。

输入http://domain.com/404http://domain.com/anythinghere时,正确包含404页面。

输入http://domain.com/home时出现错误500,我收到此错误:File does not exist: /var/www/html/domain/Dev/home

为什么这不起作用?

我的项目如下:

目录结构:

Dev/
    .htaccess
    index.php
    menu.php
    pages/
        404.php
        home.php
    resources/
        css/
            core.css
        fonts/

.htaccess:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^(\d+)*$ ./index.php?page=$1

index.php:

<?php

if ( !isset( $_GET['page'] ) )
    $_GET['page'] = 'home';

$pages = array('home');
$page  = $_GET['page'];

include( 'menu.php' );

if( in_array( $page, $pages ) )
{
    include( 'pages/' . $page . '.php' );
}
else
{
    include( 'pages/404.php' );
}

?>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

重写应该是:

RewriteRule ^([^/]+)$ /index.php?page=$1 [L]