在.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和句点的搜索结果都是域名问题,所以我想知道是否有人对此有任何想法?
答案 0 :(得分:0)
试试这个:
RewriteRule ^thing/(.+)$ showthing.php?thingname=$1 [L,QSA]