我有一个站点,允许用户根据用户输入example.com/My Page
问题是,他们是否创建类似example.com/H & E Photos
或example.com/#1 Fan Club
的网址
一旦php对URL进行解码,它将尝试将这些字符解析为哈希值(对于?
,则为查询字符串)
在我的.htacess中,我正在([^/]+?)
处理这种情况的典型方法是什么?理想情况下,无需使用id系统(example.com/131234121)。我的计划不佳:(
编辑。在这里谈论PHP。到达服务器时对url进行编码,php在解析正则表达式和url之前进行解码
答案 0 :(得分:0)
如果您正在使用PHP创建/处理用于存储用户输入的URL的条目,则在尝试处理该字符串之前,请对该字符串使用htmlentities。
https://www.php.net/manual/en/function.htmlentities.php https://www.w3schools.com/php/func_string_htmlentities.asp
答案 1 :(得分:0)
显然,我正在寻找的是重写标志。
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteflags
B Escape non-alphanumeric characters before applying the transformation.
这使您可以将百分比编码的字符串发送到URL,而无需事先对其进行解码。
所以这实际上是一个Apache的事情,而不是PHP。对不起误导性问题。