PHP:mod_rewrite如果查询包含值

时间:2011-05-16 09:03:04

标签: php .htaccess mod-rewrite redirect

最近我用mod_rewrite解决了我的问题,将域重定向到子文件夹。现在我已经解决了原来的问题,我已经打了另一面墙。

以下是一个示例结构:

/
/index.php
/content/
/content/styles.css
/domain/
/domain/index.php

为简单起见,/domain/是当前和最顶层的文件夹。 /domain/index.php我正在尝试访问/content/styles.css。我该如何实现?假设没有前面目录的web链接。另外,../不起作用,因为../返回与./相同的目录。

我想到了一种方式,但我的.htaccess技能不是很强,而且我不想花费数小时或数天来拼凑答案。假设我有:

<link rel="stylesheet" type="text/css" href="content/styles.css" />

如果我是对的,href会执行该文件的请求。如何使用.htaccess捕获请求并将其指向正确的文件夹?就像查询字符串看起来像^/content/(.*)$一样,并将其重写回一个目录以访问../content

希望这有点意义。

4 个答案:

答案 0 :(得分:3)

您可以使用别名:

<VirtualHost *:80>
    DocumentRoot "/domain"
    Alias /content "/content"
</VirtualHost>

答案 1 :(得分:2)

您可以使用另一个.htaccess文件创建一个虚拟/domain/content目录,该文件类似于

RewriteRule ^([^/]+)$ /content/$1 [NC,L]

答案 2 :(得分:1)

如果/content/不在/domain/内且/domain/是您网络服务器上的DOCUMENT_ROOT,那么您根本无法访问/content/文件夹一个<link>代码&amp; mod_rewrite的。

您可以通过PHP访问它并包含它的内容,但这是一个不同的故事。

答案 3 :(得分:0)

我考虑过了;

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

存在于您的.htaccess文件中。 你为什么不这样做?

$dir = dirname(__FILE__);
$link = $_SERVER['HTTP_HOST'];
// $link = preg_replace('/^www\./i', '', $link);

for hrefs;

href="<?php echo $link . '/content/content.css'; ?>"

用于进口;

include($dir . '/example.php');