提交表单时重写URL

fl3*_*3x7 1 php .htaccess redirect get form-submit

有关使用htaccess重定向的问题.在GET搜索表单提交中,我得到以下网址:

http://www.example.com/search/?criteria=foo&filter=all&date=all&submit=search&page=1
Run Code Online (Sandbox Code Playgroud)

以上工作正常.然后我在我的htaccess中有这个重写规则:

RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/$ search.php?criteria=$2&filter=$3&date=$4&submit=$1&page=$5 [L]
Run Code Online (Sandbox Code Playgroud)

以上也行得正常.它允许我为我的搜索结果使用以下结构:

http://www.example.com/search/foo/title/all/1/
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,当我点击提交时,我希望它使用新的clearner url结构,但它使用带有问号和等号的杂乱的一个.现在自动我想也许我必须在PHP中进行重定向,但是如果我可以用htaccess来做,我会更高兴,因为它意味着更清晰的代码.

我也明白我可以通过截取点击并创建seo友好网址来使用JavaScript来做到这一点,但如果他们是htaccess的方式,我会更喜欢.

希望你明白我想要实现的目标,非常感谢你的阅读,

fl3x7

ps我对htaccess很新,所以如果你能解释/指导等会很棒

ant*_*nt7 7

你不能单独使用.htaccess.

您可以使用javascript(拦截onclick事件,使用用户输入的数据构建url字符串,然后将页面重定向到此URL),但考虑到javascript在客户端运行,这不是真的可靠.

我的建议是使用PHP.过程是一样的,但我会使用POST而不是GET作为表单的方法.在呈现页面之前,检测$_POST数据并构造$url使用它.然后将页面重定向到该页面$url,使用header("Location: ".$url);它最好exit();在此之后使用,以确保下面的代码不会在重定向时执行.