重写获取参数的路径

时间:2012-11-29 21:03:37

标签: apache mod-rewrite

我需要调用html文件才能更改为php,完整路径和文件应该作为get参数传递。

例如

http://www.domain.com/any/path/file.html

应该成为

http://www.domain.com/index.php?path=any-path-file.html

我想通过php文件将每次调用路由到html文件。重写应该忽略任何其他文件。

另外:是否可以再次添加其他参数?

/file.html?foo=bar
becomes
/index.php?path=file.html&foo=bar
提前谢谢 STIL

1 个答案:

答案 0 :(得分:2)

我认为不可能完全你想做什么,但我认为我们可以如此接近它无所谓。

以下重写

RewriteCond %{REQUEST_URI} \.html$
RewriteRule (.*) /index.php?path=$1&%{QUERY_STRING} [L]

将接受以.html结尾的任何请求并将其重写为index.php,将完整路径添加为查询字符串。它还会将原始请求上的任何现有查询字符串附加到新请求。由于路径变量看起来像路径= any / path / file.html,而不是你要求的路径= any-path-file.html,这并不能满足你的要求。但这并不是只能在index.php的前几行中用

进行整理
    if( isset($_GET['path']) ) {
        $_GET['path'] = str_replace("/","-",$_GET['path']);
    }