0

我正在开发一个客户端项目,我正在尝试改进将变量从 url 传递到 php 的过程。项目的 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并在php中使用urldecode进行解码。这完美地工作。

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

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

4

1 回答 1

2

这是您将使用 .htaccess 文件的典型情况。\使用 mod_rewrite。

从这里:howto mod_rewrite 对 index.php 的每个请求,除了真实文件但排除一个真实目录?

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
于 2013-10-19T11:46:13.893 回答