0

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

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

我想要的是:一个用于重新映射我的 url 的 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"">

4

1 回答 1

0

您可以使用-fRewriteCondition 排除文件:

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

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

现在,如果您调用 URL:

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

你会得到(在你的$_GET):

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

不要使用$_REQUEST. 它是非标准的和混合$_GET$_POST,它会导致非常奇怪的错误。

于 2013-09-11T11:26:50.603 回答