2013-10-19 104 views
0

我正在开发一个客户端项目,我正在尝试改进将变量从url传递给php的过程。该项目的URL结构如下所示:URL中特殊字符的问题

http://xyz.com -> Domain 
http://xyz.com/folder -> Folder/File 
http://xyz.com/doesnotexist -> Folder/File does not exist 
          -> Pass it as a parameter to index.php Script 

htaccess的规则采取这种参数“doesnotexist”,使之在一个index.php的$ _GET变量可用。

该变量在javascript中使用encodeURIComponent进行编码,该url可以在浏览器中调用并使用urldecode在php中解码。这工作完美。

现在到我的问题:当传递的变量包含特殊字符如斜杠“/”或符号“&”它不再工作,因为浏览器认为他正在寻找一个子目录。例如变量:“does/notexist” - >浏览器尝试打开http://xyz.com/does/notexist。目前,我正在用编码之前的url替换像其他字符一样的斜杠。所以我用“;”替换“/”,用“;”替换为“&”,对它进行编码,一切都很好。在我的PHP脚本中,我将它解码并用“/”和“;”替换“,”与“&”等等。这有效,但真的很丑,所以我正在寻找一种更好的方式来做到这一点。

初始url结构不能改变。有谁知道更好的方法来做到这一点?我被困在这里。一个想法是base_encode整个url参数,但这不是我想要的方式,因为url应该是可读的。

+0

您将需要一个.htacces文件做一些URL重写,这将使这很容易 –

回答