如果我重复一个问题,我很抱歉,但我似乎无法解决这个问题:(
我有一个带有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]
答案 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]