你如何使用RewriteRule?

时间:2014-05-31 09:15:02

标签: php .htaccess

我之前使用过RewriteRules,但通常只从CMS框架中复制和更改,所以我没有从头开始自己编写它们的乐趣。但是,使用我对它们的基本知识,我将以下.htaccess文件放在一起:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^post/(.*)$ post.php?id=$1 [L]
RewriteRule ^tag/(.*)$ tag.php?id=$1 [L]
RewriteRule ^more/(.*)$ subpage.php?id=$1 [L]

如果我做错了什么,我的目标是:

http://example.com/post/testpost
    is rewritten as
http://example.com/post.php?id=testpost
但是,我不能为我的生活得到身份证明。服务器重定向到正确的页面(post.php),一切似乎都很好,但我不能从$ _GET调用id。我运行了$ _GET的var_dump,数组是空的,所以我知道我不只是在我的php中拼错它。如果我手动访问post.php页面,因为RewriteRule应该输出,变量显示正常。 post.php上的代码是:

<?php
    //this function performs sanitisation and returns the HTML page contents
    echo PostViewer($_GET['id']);

    //this is just for testing purposes
    var_dump($_GET);
?>

非常感谢任何帮助,提前谢谢!

1 个答案:

答案 0 :(得分:1)

在“L”之后添加“QSA”,例如。 [L,QSA]

正在发生的事情是您的RewriteRule正在使用GET,然后不会将其重新附加到您的脚本中使用。 QSA =查询字符串追加。完全按照它在锡上说的那样。