使用多个参数时.htaccess重写错误

时间:2012-10-21 20:48:11

标签: php .htaccess mod-rewrite

我的.htaccess中有这个:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule . /index.php

这就是我使用参数的方式:

<?php
    $request = $_SERVER['REQUEST_URI'];
    $request = substr($request,1);
    $params = explode('/', $request);
    $safe_pages = array('page1','page2','page3');
    if(in_array($params[0],$safe_pages))
            {
                include($params[0].'.php');
            }else
            {
                include('404.php');
            }
?>

假设我的网站是:www.site.com

www.site.com/page - &gt;完美地运作

www.site.com/page/parameter - &gt;不加载任何CSS或图像,因为它在root / page而不是root /

中查找它们

我试图为我的CSS和图像使用绝对链接,但它仍然无法正常工作,所以我想问题出在.htaccess或者我错过了什么。

2 个答案:

答案 0 :(得分:1)

使用

<base href="http://absolute_path_here/">
在结束</head>之前的HTML中

答案 1 :(得分:1)

问题不在于htaccess重写规则,而是在你的html中 - yuor指向静态内容的链接(如css,图像或脚本)应该以斜杠开头,与域名相关。而不是

<link href="css/style.css" />
<script src="js/script.js"><script>

使用

<link href="/css/style.css" />
<script src="/js/script.js"><script>

其他方式是使用base标记,但它可以破坏页面上的命名锚点