代码之家  ›  专栏  ›  技术社区  ›  treyBake user1850175

将查询字符串转换为.php

  •  1
  • treyBake user1850175  · 技术社区  · 6 年前

    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种方法,我已经尝试了所有的搜索方法。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 -如何实现我的目标?

    2 回复  |  直到 6 年前
        1
  •  1
  •   anubhava    6 年前

    您可以在 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]
    
        2
  •  1
  •   Chris Lear    6 年前

    怎么样

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{QUERY_STRING} term=(.*)
    RewriteRule ^.*$ %1.php [L]