【发布时间】:2016-05-02 23:03:38
【问题描述】:
不用说,我对 HTACCESS 一无所知。我正在用 PHP 编写一个推荐系统,并且一切正常,尽管当我使用 HTACCESS 使 URL 变得漂亮时它停止工作。示例:
来自
http://localhost/ref.php?referral=1
到
http://localhost/ref/1
现在代码可以正常工作了,当我使用 HTACCESS 时它就停止工作了,我记得从某个地方读到过,如果我没记错的话,你不能从通过 HTACCESS 的 URL 中使用 _GET 函数?尽管如此,我已经尝试过这个 HTACCESS 规则,但它似乎不起作用.. 它重定向,根据它在丢弃 cookie 时告诉它做的代码,但当我使用时它实际上并没有丢弃 cookie缩短的网址。
RewriteRule ^ref/([^/]+)(|/)$ /ref.php?referral=$1
脚本的代码,如果它有助于理解问题..
if (isset($_GET['referral']))
{
$value = $_GET['referral']; // Let's set the cookie value
// Drop the cookie, let it expire in an hour.
setcookie("HHRefCookie", $value, time()+3600);
// Redir them to register page
header("Location: " . WWW . "/register");
}
据我了解,这应该可行吗?不应该。反馈将不胜感激。非常感谢您指导正确的方向!
【问题讨论】:
-
“它只是停止工作”是什么意思?你有错误吗?
-
没有。它重定向到代码中设置的位置。它没有丢弃 cookie,所以它不能读取变量。
-
“我记得从某个地方读到过,如果我没记错的话,你不能从通过 HTACCESS 的 URL 中使用 _GET 函数?” – 那是错的;当然,您可以在 PHP 中通过 $_GET 访问查询字符串参数——该参数的来源、原始请求或重写的请求都无关紧要。