【发布时间】:2018-10-03 03:26:59
【问题描述】:
TL;DR
转search.php?key=value => value.php
我有一个简单的项目:
|-project
|-----.htaccess
|-----index.php
|-----jquery.min.js
|-----search.php
我想学习的只是如何将查询参数转换为 page.php,例如:
?search=test变为test.php
我发现了这个 SO 帖子:htaccess rewrite for query string
这建议了 3 种方法,我已经尝试了所有但我的 search.php 不起作用。
这是我的 index.php
<html>
<body>
<form method="post">
<input type="text" name="search" placeholder="search something" />
</form>
<button type="button" id="my-btn">Submit</button>
<script src="jquery.min.js"></script>
<script>
jQuery(document).ready(function($)
{
$('#my-btn').click(function()
{
let val = $('input[type="text"]').val();
$('form').attr('action', 'search.php?term='+ val);
$('form').submit()
})
})
</script>
</body>
</html>
去search.php
<?php
$search = $_GET['search'];
echo '<pre>';
echo 'Search Term: <strong>'. $search .'</strong>';
echo '</pre>';
echo '<hr />';
我的 .htaccess 文件如下所示:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /search.php?term=$1 [L]
但这(或其他方法)不起作用。我的网址仍然是search.php?term=test - 我该如何实现我的目标?
【问题讨论】:
-
您可能需要查看文档并检查
RewriteRule指令的参数的作用。 -
@miken32 我看了看,但老实说不确定它卡住了,apache 的东西似乎不适合我.. 但我会继续重新阅读,直到一些灯亮起
-
你已经把这个复杂化了,只需这样做
<form method="get" action="text.php">并摆脱 JS 并重写东西。使用get表单进行搜索并没有错,事实上这是最常见的用法。这就是它的意义所在,因此可以为 url 查询添加书签。 -
学习正则表达式(正则表达式)它们有点过时和令人困惑,但是一旦你理解了它们,它们就会非常强大。如果您输入
mysite.com/test.php,它将映射到mysite.com/search.php?page=test例如regex101.com/r/Ax5qBN/1 -
@ArtisticPhoenix 我相信这是我绝对需要改进和发展技能的东西。这可能是阻碍我发展的主要因素之一
标签: php .htaccess url-rewriting