2011-12-24 79 views
1

好的,我一直在试图弄清楚这一点。我刚刚想出了如何使用Apache的mod_rewrite规则。我在我的网站上设置了一个搜索脚本,它使用GET。我有一个使用GET方法的html表单。问题是,当我提交表单我的网址出来这样的:http://localhost/search/?search=name&term=user当它应该是这样的:http://localhost/search/name/userHTML表单和mod_rewrite

有没有办法让url像第二个?我正在使用PHP。

这里是我的htaccess文件,以及:

RewriteEngine on 
RewriteRule ^member/?([^/\.]+)?/?$ member.php?page=$1 [L] 
RewriteRule ^games/?([^/\.]+)?/([^/\.]+)?/?$ games.php?page=$1&p=$2 [L] 
RewriteRule ^search/?([^/\.]+)?/([^/\.]+)?/?$ search.php?search=$1&term=$2 [L] 
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L] 

感谢, Legobear154

回答

2

这有什么好做的mod_rewrite。你需要使用JavaScript。

创建一个onsubmit您的窗体的事件处理程序。并且在javascript函数中根据表单数据修改表单URL。

+0

所以,我不能只是做一个mod_rewrite来修改查询字符串?我正在阅读Apache文档并发现这一点:修改查询字符串 默认情况下,查询字符串未经更改而传递。但是,您可以在包含查询字符串部分的替换字符串中创建URL。只需在替换字符串中使用问号表示应将以下文本重新注入查询字符串。当您要删除现有的查询字符串时,只需使用问号结束替换字符串。要合并新旧查询字符串,请使用[QSA]标志。 – legobear154 2011-12-24 06:40:44

+0

Mod_reqrite在请求完成后开始工作。它不能在客户端更改URL。因为你还没有创建URL,所以更不用说请求了。 – 2011-12-24 06:52:09

+0

好的,我将如何去修改JavaScript中的表单URL?我知道一些JavaScript,但不是很多。 – legobear154 2011-12-24 07:05:19

0

请尝试以下操作: -

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^member/([^/]+)/ member.php?page=$1 [NC] 
RewriteRule ^games/([^/]+)/([^/]+)/ games.php?page=$1&p=$2 [NC] 
RewriteRule ^search/([^/]+)/([^/]+)/ /search.php?search=$1&term=$2 [NC] 
RewriteRule ^([^/]+)/ index.php?page=$1 [NC] 

希望它能帮助。