我试图将"search.php?q=somethinghere"
重定向到"search/somethinghere/"
,但我不能这样做!我正在尝试发送“<form action="search/" method="get" name="search">
”这样的表单,但网址会转到"search/?q=somethinghere"
RedirectMatch 301 ^/search.php?q=(.*)$ http://domain.com/search/$1/
这也行不通。这个问题是什么?
我不想在网址中使用“?q =”。
答案 0 :(得分:4)
除非您上面有打字错误,否则问题在于您尝试重定向:
^/search.php?q=(.*)$
但您收到的网址是:
search/?q=somethinghere
(区别在于重定向规则中的.php)
您可能希望尝试使用以下重定向规则:
RedirectMatch 301 ^/search?q=(.*)$ http://domain.com/search/$1/
答案 1 :(得分:0)
在客户端进行此操作会更清晰,更快捷。让Javascript在表单提交上构建search/query
URL - 这将为您节省额外的请求。
但是,要通过服务器端重定向执行此操作,您可以mod_rewrite
使用RewriteCond
和QUERY_STRING
作为来源:
RewriteCond %{QUERY_STRING} \bq=([^&]*)$
RewriteRule ^search.php$ /search/%1 [R=301]
答案 2 :(得分:0)
每当我有.htaccess问题时,我总是先看一下这个网站:http://corz.org/serv/tricks/htaccess2.php#cooldenial
该站点提供了许多使用.htaccess文件执行不同操作的示例和说明。根据该网站,你可以尝试类似的东西:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^search/([^/]+) http://domain.com/search.php?q=$1 [NC]
然而,我不是一个.htaccess大师 - 所以你可能需要摆弄它。