0

我有这个简单的 .htaccess 文件RewriteRule ^([0-9a-zA-Z:_-]+)/?$ index.php?page=$1,所以我可以让http://mywebsite.com/stuff和东西变成GET variable. 我想扩展它的功能以使其index.php?page=$2&page2=$3...无限期地像这样的东西http://mywebsite.com/stuff/is/cool仍然有效。

另一个问题是,当我输入 URL http://mywebsite.com/stuff/时,HTML 似乎认为它在stuff文件夹中,所以它不会加载文件(css、图像等),如何解决这个问题?

谢谢

4

2 回答 2

1

例如,您可以使用 PHP 处理 url,让我们说您的脚本条目将是 index.php 在这个文件中,只需像这样处理 url

$pages = $_GET['page'];
$extracted_p = explode ("/",$pages);
//and foreach extracted pages to decide what you want with it

第二部分,您需要设置基本 url 变量并将 html 基本标记放在脚本的最标题中

IE

$base_url = "http://localhost/myscript/";

在 HTML 中

<base href="<?php echo $base_url?>" />

就这样

于 2013-06-10T13:34:34.963 回答
1

你把事情复杂化了。只需将其放入您的.htaccess

FallbackResource index.php

它将确保所有不指向现有文件的请求都将index.php在根文件夹中处理。然后在该文件中执行:

$path = explode('/', trim($_SERVER['REQUEST_URI'], '/'));

并从那里轻松解析$path,例如:

if(!count($path))
  RenderHomepage();
elseif($path[0] == 'blog')
  RenderBlog();
else
{
  header('HTTP/1.1 404 Not Found');
  die('This page does not exist');
}

至于你的另一个问题,从浏览器的角度来看这是合乎逻辑的——它看不到你的内部结构,所以它只是根据它可以看到的 URL 来做文件夹逻辑。这就是为什么您绝不能使用相对路径的原因,只需将您的资产指定为基于根的/static/mystyles.css,例如,它们将始终可以正常解析。

于 2013-06-10T13:38:49.657 回答