【问题标题】:.htaccess rewrite url , dont work on Form Submit.htaccess 重写 url,不适用于表单提交
【发布时间】:2019-05-26 23:07:51
【问题描述】:

我正在处理搜索显示,但 htaccess 出现了一些问题,无法按我想要的方式工作。我对同一个 url 进行了多次重写,我认为这就是原因。但我不确定..


更新:根据我的测试结果,所有 Rewrite url 都有效。但是表单强制页面转到search.php?search=test,而不是我想要的search/test

所以真正的问题是:

如何让表单 action="" 提交给 search/test/ 而不是 search.php?search=test


我得到了什么:

search.php?page=1
search.php?type=DEFINED_TYPE&search=test
search.php?type=DEFINED_TYPE&search=test&page=1

我想要什么:

search/1
search/DEFINED_TYPE/test
search/DEFINED_TYPE/test/1

表格:

<form action="" method="get" id="searchForm">

<label for="DEFINED_TYPE_radio">
    <input type="radio" name="type" id="DEFINED_TYPE_radio" value="DEFINED_TYPE"<?php if($_GET['type'] == 'DEFINED_TYPE') echo ' checked' ?> />
    <em<?php if($_GET['type'] == 'DEFINED_TYPE') echo ' class="selected"' ?>><i class="fas fa-tags"></i>Type</em>
</label>

<div class="input">
    <input type="text" placeholder="Search here..." value="<?php echo isset($_GET['search']) ? htmlspecialchars($_GET['search']) : '' ?>" name="search" id="searchField" autocomplete="off" autofocus>
    <i class="fa fa-search submit" id="submit"></i>
</div>

</form>

Htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteRule ^search$                    search.php [NC]
RewriteRule ^search/([^/]+)$            search.php?page=$1 [NC]

RewriteRule ^search/([^/]+)/([^/]+)$            search.php?type=$1&search=$2 [E=ORIG_URI:/$1]
RewriteRule ^search/([^/]+)/([^/]+)/([^/]+)?$   search.php?type=$1&search=$2&page=$3 [E=ORIG_URI:/$1]

谁能发现我做错了什么?

【问题讨论】:

  • 你的问题到底是什么?
  • @starkeen 在提交表单时查看“想要什么”与“我得到什么”。
  • 您想在浏览器中输入search.php?page=1 并查看/search/1 吗?
  • @starkeen 当我提交表单时,它会转到 search.php/page=1 而不是 search/1,因为我告诉 htaccess 这样做。
  • @starkeen - 当用户键入路径时,这与路由和 .htaccess 文件中的设置有关,您知道该主题以及如何设置它吗?跨度>

标签: php html .htaccess


【解决方案1】:

请注意,当您在表单上使用 get 方法时,每个字段都会连同其名称作为参数添加到 url。

我建议你用 post 方法提交表单,并在 action 属性中添加 url(或整个 url):

<form action="search.php?search=test" method="post" id="searchForm">

<form action="/search/test" method="post" id="searchForm">

这涉及改变您阅读这些值的方式

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2015-04-12
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多