使用mod_rewrite清理URL并保留包含(js和css)的根路径

时间:2013-09-11 11:24:56

标签: php apache mod-rewrite clean-urls

设置:我拥有一个运行Apache和PHP的常规Unix Web服务器。 它按预期提供PHP脚本。

当前情况:我的所有链接看起来都像参数website.net/index.php?show=article&do=new的典型PHP链接

我想要的是什么:用于重新映射我的网址的mod_rewrite规则,无论它们的外观或包含方式如何。

例如: website.net/article/new应该重定向到index.php而$_SERVER['REQUEST_URI']应该包含/article/new/等等,但不限于此而且没有固定模式(* n个变量),所有其他工作都是用PHP完成的(验证,包括)。

我迄今为止的努力:使用谷歌很多并尝试了许多示例。但只发现一些固定模式,有些甚至打破了整个网站。

另一个问题:我在尝试使用mod_rewrite时注意到它打破了我的js和css文件的路径。 我使用相对路径,它们位于相对于index.php

的子文件夹中

<script src="js/included_file.js"></script>

<link href="css/included_file.css" rel="stylesheet"">

1 个答案:

答案 0 :(得分:0)

您可以使用-f RewriteCondition排除文件:

RewriteCond %{REQUEST_FILENAME} !-f          #exclude files
RewriteRule ^(.*) index.php?__path=$1 [QSA]  #catch everything

如果你想保留目录,你也可以使用-d

现在,如果您拨打网址:

website.net/path/to/file?query=string&foo=bar

你会得到(在$_GET中):

__path = "/path/to/file"
query = "string"
foo = "bar"

请勿使用$_REQUEST。它是非标准的并混合$_GET$_POST,它可能导致非常奇怪的错误。