我想检查页面的当前URL,如果在查询中包含+符号,如果没有+符号,我将重写URL并301重定向到一个新的URL。例如
www.sitename.com/search?q=123 456
这应当
www.sitename.com/search?q=123+456
首先我想用PHP做这个,首先,$_GET['q']
和干净的字符串,用+替换空格,并与URL中当前的$_GET['q']
进行比较,但问题是因为我不能在$_GET
中获得+符号,简单的我不能检查URL是否包括+符号。
另一个选择是使用**.htaccess**
RewriteCond %{QUERY_STRING} ^q=(.*)$
RewriteRule ^search$ test.php?mode=search&q=%1 [L]
但我相信使用PHP可以更好地完成这一点,因为有更多的查询参数,而不仅仅是q
有些想法
$q1 = cleanq($_GET['q']) //This query include +,cleanq is function to clean string and replace space with +
$q2 = $_GET['q'] //This is current one
if(strcmp($q1, $q2) != 0){
header("HTTP/1.1 301 Moved Permanently");
header("Location: www.sitename.com/search?q=".$q1);
exit();
}
看起来很简单,但无法获得登录查询进行比较,有什么想法如何使这一点?
1条答案
按热度按时间7ajki6be1#
由于URL规范的原因,URL中的字符
+
必须解释为空格,因为URL中不允许使用纯空格。您不必担心将
www.sitename.com/search?q=123 456
重定向到www.sitename.com/search?q=123+456
,它是同一个链接。您可以在PHP文件中进行一个简单的测试:
test.php?search1=aaa bbb&search2=aaa+bbb
您将得到
Same string!
如果你想更新当前的URL,你可以用javascript来完成,用
+
替换编码的url空间%20
使用
$_SERVER['REQUEST_URI']
进行PHP重定向