0

我有下一个表格:

<form action="/" method="get"  name="main">

   <select size="1" name="type" id="sel" class="dropdown">
        <option value="Class1"  >YES</option>
        <option value="Class2"  >NO</option>
        </select>

    <input type="text" name="text"/>

      <button id="go" type="submit"/>Get the Results!</button>
</form>

在 .htaccess

RewriteEngine on
RewriteBase /

Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([A-Za-z0-9^/]+)/([A-Za-z0-9_^/]+)/$ /index.php?type=$1&text=$2 [QSA,L]
RewriteRule ^([A-Za-z0-9^/]+)/([A-Za-z0-9_^/]+)/?$ /index.php?type=$1&text=$2 [QSA,L]

问题是:我如何将用户发送到http://site.com/class1/text/以便.htaccess代码工作?

现在将它们发送到/?type=class1&text=sometext

4

2 回答 2

0

尝试将以下内容放在规则中的第一个 RewriteCond之前:

RewriteCond %{QUERY_STRING} type=(\w+)&text=(\w+)
RewriteRule .* /%1/%2/? [QSD,R]

理论上这应该重定向/?type=class1&text=sometext/class1/sometext/. 这将与以下 RewriteRules 匹配,它应该使用正确的参数调用 index.php,但不会更改浏览器中的 URL。

此外,您可能只需要第二个 RewriteRules,因为/?它将匹配有一个斜线,而没有一个。

于 2013-05-09T12:03:20.277 回答
0

我已经回答了我的问题 :) 使用 .htaccess 我们将有太多的重定向,因此要接收类型为的链接

http://site.com/class1/text/

我在表单中添加了一个 JQuery 代码,因此在提交时会生成所需的链接:

$('#seform').submit(function (event)
{
    var type = $("#sel").val();
    var text = $("#text").val();
       var action = '/'+type+'/'+text;
      $(this).attr('action', action);
});

感谢 @Matt Ball

于 2013-05-09T20:06:12.487 回答