TL; DR
打开search.php?key = value => value.php
我有一个简单的项目:
|-project
|-----.htaccess
|-----index.php
|-----jquery.min.js
|-----search.php
我要学习的是如何将查询参数转换为page.php,例如:
?search=test
变为test.php
我发现了这样的帖子: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
-我该如何实现自己的目标?
答案 0 :(得分:1)
怎么样
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} term=(.*)
RewriteRule ^.*$ %1.php [L]
答案 1 :(得分:1)
您可以在project/.htaccess
中使用此代码:
RewriteEngine On
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+search(?:\.php)?\?term=([^\s&]+) [NC]
RewriteRule ^ /%1.php? [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.php$ search.php?term=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ search.php?term=$1 [L,QSA]