我有一个包含许多字段的表单......
提交这些字段时,我使用 POST 方法隐藏传递给 PHP 页面的实际变量。
然而,我无法摆脱完整的链接。
从 GET 更改为 POST 确实使所有表单字段在网址中不可见,但此部分仍然可见:
mydomain.com/bin/query#
我希望它不可见,或者说:
mydomain.com/search
我已启用mod_rewrite
因此我可以使用mod_rewrite
这样做,但我是mod_rewrite
的新手,所以我需要你的帮助......
我该如何隐藏此网址?
如果您需要更多输入,请告诉我......
答案 0 :(得分:3)
提交a时,您必须为表单指定操作属性。我假设您的操作是mydomain.com/bin/query#
,但您希望它是mydomain.com/search
。然后你应该使用mydomain.com/search
来执行动作和以下重写:
RewriteEngine on
RewriteRule ^/search$ /bin/query [QSA,NC]
这会在浏览器网址中显示mydomain.com/serach
。
编辑:使用QSA标记,您可以将GET参数传递给查询脚本。 NC使重写不区分大小写。
您的表单应如下所示:
<form action="/search" method="post">
...
</form>
答案 1 :(得分:2)
你不应该隐藏URL,这是浪费时间。
用户的浏览器(由用户控制)将数据发送到您的服务器。用户将始终能够将他们喜欢的任何数据发送到表单处理程序(因为您无法告诉浏览器将其发送到何处而不向用户提供该信息)。使用mod_rewrite只是更改URL(因此隐藏它没有安全性好处),搜索引擎也不会发出POST请求(因此没有SEO优势)。
如果您正在寻找美容益处,那么我真的不会担心它。注意到表单提交的URL的用户数量很少,关注的数量甚至更小。
答案 2 :(得分:2)
假设您是网络世界的新手,这里有两条规则供您学习:
答案 3 :(得分:1)
尝试RewriteRule ^/search /bin/query
,然后您可以将表单操作更改为/ search
答案 4 :(得分:1)
您可以执行的操作是在表单处理后发出重定向。
// process form vars e.g.,
save_values($_POST);
// redirect
header('Location: /some/other/page');
exit;
浏览器用户只能看到您最终重定向的页面。如果您知道自己在做什么,仍然可以检查HTTP请求/响应以确定表单处理的位置。