使用PHP $ _GET和.htaccess拒绝网址

时间:2012-11-08 11:11:35

标签: php .htaccess get

index.php只有一行

<?php echo $_GET['a']; ?>

如果我输入url

http://localhost/test/?a=abc.....

我得到了

abc.....

但如果我创建.htaccess并写:

RewriteEngine on
RewriteRule ^([a-z]+)$ ?a=$1

如果我输入url

http://localhost/test/abc.....

我只获得abc(没有点.....

为什么会这样?

如果发送404 error字符串,我想获得abc.....。我怎么能达到这个目的呢?

1 个答案:

答案 0 :(得分:0)

尝试

RewriteRule ^([a-z]+)$ ?a=$1 [L]
RewriteRule .* 404.php

如果第一个规则匹配,则会将值放入a,否则他会将用户发送到404.php

另一个编辑

对不起,我一开始误解了你的问题。

你的正则表达式只捕获拉丁文(英文)字母,在这里:^([a-z]+)$,所以如果你想要包含点数,请使用:^([a-z\.]+)$或者如果你想抓住任何东西使用:^(.*)$ < / p>

ORIGINAL - 我保留在这里,因为它可能仍然对您有用

使用

RewriteRule ^([a-z]+)$ ?a=$1 [QSA]

这将在您的重写规则之后传递查询字符串。

有关此主题的更多信息,请尝试this article