由于字符而导致HTTP错误请求错误

时间:2016-11-09 14:31:14

标签: php apache http

我正在使用.htaccess转换包含以下参数的链接......:

www.domain.com / offer.php?id= 1000 &title= 所有衬衫的折扣均为20%

www.domain.com / offer/ 1000 / 所有衬衫的折扣均为20%

现在,当我尝试打开链接时,显示服务器端错误:

  

错误请求   您的浏览器发送了此服务器无法理解的请求。

在我的代码中,title值不起任何作用,但出于SEO原因我需要它。所以当我删除" "页面打开的字符没有问题。

那么我该如何解决这个问题,这样我的链接就会打开,尽管HTTP请求中有百分比字符?

2 个答案:

答案 0 :(得分:3)

Nordenheim所述,问题是在标题属性中使用特殊字符。

使用PHP,您可能希望在发送链接上的title属性上使用urlencode()

所以:

<?php

$title = "All shirts are with a discount of 20%";
$link = urlencode($title);

?>
<a href='http://www.domain.com/offer.php?id=1000&title=<?php print $link;?>'>Click here</a>

这会将All shirts are with a discount of 20%转换为网址安全字符串All+shirts+are+with+a+discount+of+20%25,并解决您从.htaccess mod_rewrite获得的错误。

答案 1 :(得分:2)

百分号(%25)用于对url字符串中的特殊字符进行编码。因此,它具有特殊含义,必须作为编码字符传递,即<meta name="description" content="content" />

由于您传递了特殊字符的指示并且未发送任何其他内容,因此您会收到错误。