.htaccess从查询中删除尾随句点

时间:2010-12-26 04:05:39

标签: php apache .htaccess

在.htaccess从字符串中删除尾随句点时遇到一些麻烦。我正在运行Apache / 2.2.12(Win32)。

这不是一个生产系统,所以.htaccess除了以外没有别的东西:

RewriteEngine on  

...和规则,除了名称中有一个尾随句点之外,这在所有情况下都适用于目前为止。规则都采取以下形式:

RewriteRule ^thing/(.*)$ showthing.php?thingname=$1

A.php上的链接:

<a href="thing/M.O.X."> ...CLICK

所以在 showthing.php 中,我只是这样做:

$sTHINGname= !isset($_REQUEST['thingname']) ? NULL : $_REQUEST['thingname'];

...然后通过数据库运行 $ sTHINGname 来查找ID。

问题在于thingname有一个尾随句点(例如:“ M.O.X。”)

echo $sTHINGname;  // shows M.O.X, which does not match an ID

一种解决方案是:

str_replace( '.', '%2E', $name );  

但是当链接被放置在引用页面(A.php)中时,这可行,但链接读取:

<a href="thing/M%252EO%252EC%252E">

...这有点不优雅,并没有解决问题,因为如果用户输入URL“......事物/ MOX ”,他们仍然无法得到结果。

我检查了用$ _GET替换$ _REQUEST,但结果没有改变。也:

RewriteRule ^(thing/)(.*)$ showthing.php?thingname=$2  

......并且变体都显示相同的结果。

大多数处理htaccess和句点的搜索结果都是域名问题,所以我想知道是否有人对此有任何想法?

1 个答案:

答案 0 :(得分:0)

试试这个:

RewriteRule ^thing/(.+)$ showthing.php?thingname=$1 [L,QSA]