【问题标题】:Remove + (plus symbol) from url using .htaccess or PHP使用 .htaccess 或 PHP 从 url 中删除 +(加号)
【发布时间】:2014-11-15 23:29:48
【问题描述】:

我最近对我网站的 .htaccess 文件进行了一些更改。我有一个使用简单的 php 脚本搜索数据库的搜索表单。

现在,如果用户从 mysite.com/search.php 搜索“红色卡车”,我的网站将返回 mysite.com/red+trucks.php(我已经设置了 .htaccess 文件以创建友好的 url 并301重定向)。我想知道如何删除 + 加号并将它们更改为 - 连字符?

我的 .htaccess 文件看起来像这样,您在 CMate 中进行了更改

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^search/(.*)\.php search.php?pro_query=$1
RewriteRule ^search/(.*)\.php$ /scripts/search.php?pro_query=$1
RewriteCond %{QUERY_STRING} ^pro_query=([0-9,a-z,.*,%25,%2B,%+]+)$
RewriteRule ^scripts/search\.php /search/%1.php? [R=301,NC,L]
RewriteRule ^([^+]*)\+(.*) $1\-$2 [N]

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    如果可以将所有+ 符号替换为-,请尝试此规则:

    RewriteRule ^([^+]*)\+(.*) $1\-$2 [N]
    

    在您的情况下,将其添加为最后一条规则。

    【讨论】:

    • 感谢您的回复。不幸的是,它没有用。我收到“未发送数据”。该页面是动态创建的,如果用户输入的单词超过一个,则生成的页面会在两个单词之间包含一个 +。
    • 我的 htaccess 版本粘贴在下面:
    • Options +FollowSymLinks RewriteEngine on RewriteRule ^search/(.*)\.php search.php?pro_query=$1 RewriteRule ^search/(.*)\.php$ /scripts/search.php? pro_query=$1 RewriteCond %{QUERY_STRING} ^pro_query=([0-9,a-z,.*,%25,%2B,%+]+)$ RewriteRule ^scripts/search\.php /search/%1.php? [R=301,NC,L]
    • 我猜错误不在上述规则中,因为它实际上只是以迭代方式将+符号替换为-。请说明你是如何将它与现有的 htaccess 文件结合起来的。
    • 您可以使用一些第三方网站粘贴代码,例如pastebin.com,在评论中很难阅读。
    猜你喜欢
    • 2015-09-08
    • 2013-05-09
    • 2013-04-01
    • 2013-09-04
    • 2016-01-09
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多