Php .htaccess配置多个参数和文件重定向
我有一个简单的.htaccess文件Php .htaccess配置多个参数和文件重定向,php,.htaccess,Php,.htaccess,我有一个简单的.htaccess文件RewriteRule^([0-9a-zA-Z:-]+)/?$index.php?page=$1,这样我就可以把东西变成GET变量。我想无限期地扩展它的功能,使它像index.php?page=$2&page2=$3…,这样的东西仍然可以工作 另一个问题是,当我输入URL时,HTML似乎认为它位于stuff文件夹中,因此它不会加载文件(css、图像等),如何解决这个问题 谢谢您可以使用PHP处理url 例如,让我们假设您的脚本条目为index.php 在这个文
RewriteRule^([0-9a-zA-Z:-]+)/?$index.php?page=$1
,这样我就可以把东西变成GET变量。我想无限期地扩展它的功能,使它像index.php?page=$2&page2=$3…
,这样的东西仍然可以工作
另一个问题是,当我输入URL时,HTML似乎认为它位于stuff
文件夹中,因此它不会加载文件(css、图像等),如何解决这个问题
谢谢您可以使用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基本标记中
在脚本的最大页眉处
i、 e
在html中
<base href="<?php echo $base_url?>" />
你把事情复杂化了。只需将其放入您的.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
中,它们总是可以很好地解决问题。似乎是一个很棒的解决方案,但是如果页面末尾没有index.php文件,FallbackResource index.php
似乎无法工作,我不想那样。当我把它放进一个像这样的网络文件夹时,它就不起作用了。它的工作方式如下:或此:。如何让它像这样工作?就是这样。如果没有,您的.htaccess
中还有其他垃圾阻碍了它。这应该是这里唯一的一行奇怪的。。。这是.htaccess文件中的唯一一行。在这里,它只在末尾使用index.php指示。我尝试了FallbackResource index.php
和FallbackResource/index.php
,就像在示例中一样,这两种方法在没有index.php指示的子文件夹中都不能正常工作。FallbackResource/potates/index.php
几乎可以工作。如果我这样做,它会工作:,但不会只与。它返回一个javascript控制台错误:加载资源失败http://mysite.com/potato/
(虽然页面仍然显示,但javascript无法工作)我认为问题在于URL结尾的/处,但不知道如何解决它
if(!count($path))
RenderHomepage();
elseif($path[0] == 'blog')
RenderBlog();
else
{
header('HTTP/1.1 404 Not Found');
die('This page does not exist');
}