2011-09-09 61 views
0

关于使用htaccess重定向的问题。在GET搜索表单提交我得到以下网址:提交表单时重写URL

http://www.example.com/search/?criteria=foo&filter=all&date=all&submit=search&page=1 

上述工作正常。然后我在我的htaccess中有这个重写规则:

RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/$ search.php?criteria=$2&filter=$3&date=$4&submit=$1&page=$5 [L] 

上述也工作正常。这使我可以使用下面的结构,我的搜索结果:

http://www.example.com/search/foo/title/all/1/ 

现在我的问题是,当我点击提交,我想不过它使用的混乱一个带有问号它使用新推行清洁URL结构和等号。现在我自动思考也许我必须在PHP中做重定向,但是如果我可以用htaccess来做,我会更快乐,因为它意味着更干净的代码。

我也明白,我可以通过拦截点击并创建seo友好的url来做到这一点,但如果他们是一种方式与htaccess我会更喜欢。

希望你明白我尝试实现和阅读千恩万谢,

fl3x7

ps的即时通讯漂亮的新htaccess的,所以如果你能解释一下/指导等,将是巨大

+0

是否有一个原因,你不能,例如,POST到'search'并重定向你'搜索/富/标题/全部/ 1 /'? – stslavik

+0

@stslavik感谢您的评论。这就是我最初想到做不过随后我只是想,如果我可以使用htaccess的这将是凉爽,如果他们的是没有办法与htaccess的做到这一点做我将最有可能做到这一点:)后 – fl3x7

+0

的.htaccess只处理请求浏览器发送它。由于浏览器字符串以'?key = val [&key2 = val2 [...]]'的形式获得在一起,因此htaccess甚至没有在URL被写入浏览器的时候播放。不好意思,朋友。 – stslavik

回答

6

你不能单独使用.htaccess。

您可以使用javascript(拦截onclick事件,使用用户输入的数据构造url字符串,然后将页面重定向到此url),但考虑到JavaScript在客户端运行,这并不可靠。

我的建议是为此使用PHP。这个过程是一样的,但我将使用POST而不是GET作为表单的一种方法。在页面呈现之前,检测到$_POST数据并使用它构建$url。然后将页面重定向到$url,使用header("Location: ".$url);在此之后最好使用exit();,以确保下面的代码在重定向时不会执行。

0

你如果没有Javascript,不能这样做。

使用GET方法的HTML表单将在查询字符串中发送表单值。
没有办法告诉它将值放入路径中。

0

你或许应该的Javascript做到这一点,但是你通过重定向可以做htaccess的。我认为这会是这样的:

RewriteRule ^search\.php?criteria=(.*)&date=(.*)&filter=(.*)&page=(.*)&submit=([^&])* /search/$1/$3/$2/$5/$4 [R=302, L] 

我希望这会工作,因为查询字符串应该有自己的价值观按字母顺序到达。

然而,一个警告的话:这可能不起作用,所以请把它作为一个建议尝试。

0

使用seo网址进行搜索绝对没有什么好处。
谷歌家伙不太可能比你聪明,但他们使用STANDARD查询字符串方式进行搜索。因为这样做搜索的每一个其他的方式是丑陋