从URL中删除尾随点

时间:2010-02-17 13:06:02

标签: php .htaccess mod-rewrite get

我有一个网址 - http://callisto/news/1st_February_is_here... - 它有三个尾随点,但是当它通过mod_rewrite并到达脚本(在$ _GET中)时,点被删除了(但剩下的字符串就OK了。

这是htaccess规则:

RewriteRule ^([^/]+)/(.*)$ index.php?__action=site&__filter=$1&__page=$2 [L,QSA]

感谢。

1 个答案:

答案 0 :(得分:1)

我认为你使用的是帖子的标题或类似于URI中第三个位置的东西。由于您可能通过此方法通过URI获得了许多其他“破坏”字符,我建议您在将标题附加到URI之前清理标题,并将相同的清理字符串放入数据库以供参考。

删除任何非字母数字的字符,并用连字符' - '替换空格 - 这将确保您不会混淆任何进一步的内容或碰到任何阻止您的URI工作的浏览器特定问题。

$title = '1st February is here...';
$clean_title = preg_replace('/[^a-zA-Z0-9\s]/', '', $title);
$finished_title = str_replace(' ', '-', $clean_title);

运行代码aboce将清除你的标题。

http://callisto/news/1st_February_is_here...

应该成为:

http://callisto/news/1st-February-is-here

或类似的东西。我建议使用连字符而不是下划线的唯一原因是我偶尔会在URI中传递下划线的问题。

另外,我认为你会发现这是Wordpress使用的方法 - 最有可能的原因与你看到这个问题的原因相同。

GL!