表格动作GET + Mod Rewrite

时间:2013-11-18 17:33:50

标签: php .htaccess mod-rewrite

如果我重复一个问题,我很抱歉,但我似乎无法解决这个问题:(

我有一个带有GET操作的FORM:

<form action="tag" role="form" method="get">

其中包含名为“q”的搜索输入

我想要的是,当我提交表单时,导航栏中显示的URL为:

http://localhost/web/tag/dress

而不是

http://localhost/web/tag?q=dress

在我的.htaccess中我有

RewriteRule ^tag/([0-9a-z]+)/?$ index.php?tag=$1 [L]

当我直接访问时,哪个工作正常:

http://localhost/web/tag/dress

我想要的只是将表格带到这个干净的网址,而不是在导航栏中使用?q =参数。

有什么建议吗?

我的.htaccess的简化版本是:

ErrorDocument 404 http://localhost/web/#404
RewriteEngine on

RewriteRule ^index.html index.php [L]

###TAG
RewriteRule ^tag/([0-9a-z]+)/?$ index.php?seccion=home&tag=$1[L]

###USER PROFILE
RewriteRule ^([0-9a-z]+)/?$ index.php?seccion=profile&user=$1 [L]

2 个答案:

答案 0 :(得分:1)

我想知道我是否被迫使用javascript执行此操作?

类似的东西:

$('.search-form').submit(function (event) { 
    var tag = $('#q').val();
    window.location='tag/'+tag;
    return false;
});

答案 1 :(得分:0)

在现有规则之前添加此附加规则:

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+web/tag\?q=([^\s&]+) [NC]
RewriteRule ^ /web/tag/%1? [R=302,L]

更新:您的完整.htaccess: 注意:“/”丢失了。现在应该可以了。

ErrorDocument 404 web/#404

RewriteEngine on
RewriteBase /web/

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /tag/\?q=([^\s&]+) [NC]
RewriteRule ^ tag/%1? [R=302,L]

RewriteRule ^index\.html$ index.php [L,NC]

###TAG
RewriteRule ^tag/([0-9a-z]+)/?$ index.php?seccion=home&tag=$1 [L,NC,QSA]

###USER PROFILE
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-z]+)/?$ index.php?seccion=profile&user=$1 [L,NC,QSA]