我之前使用过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);
?>
非常感谢任何帮助,提前谢谢!
答案 0 :(得分:1)
在“L”之后添加“QSA”,例如。 [L,QSA]
正在发生的事情是您的RewriteRule正在使用GET,然后不会将其重新附加到您的脚本中使用。 QSA =查询字符串追加。完全按照它在锡上说的那样。