如何在我的网址中替换+。我在htacces中添加了什么代码来摆脱+并用减号替换它。
RewriteCond %{QUERY_STRING} ^search=([^&]+)$
RewriteRule ^ http://mysite.com\/Download\/free\/%2.html? [R,L,NE]
如果我输入包含空格的搜索,则每个空格都会变为+,我想要 - 。
答案 0 :(得分:4)
我假设网址的 bla + bla + bla 部分:http://mysite.com/Download/free/bla+bla+bla.html
来自查询字符串search=
的值。根据您可能拥有的其他规则,您可以通过两种不同的方式进行此操作。在将查询字符串重定向到.html文件之前,您可以先从查询字符串中删除所有空格。或者,您可以将查询字符串重写为URI,然后在重定向之前删除空格。它会是这样的:
RewriteCond %{QUERY_STRING} ^search=(.*?)(\+|%20)(.*)$
RewriteRule ^ /?search=%1-%3 [L,NE]
RewriteCond %{QUERY_STRING} !(\+|%20)
RewriteCond %{QUERY_STRING} ^search=([^&]+)$
RewriteRule ^ http://mysite.com\/Download\/free\/%1.html? [R,L,NE]
请注意,在你的htaccess中你有%2 后退引用,它似乎没有引用任何内容。
首先重写为URI,然后重定向:
RewriteCond %{QUERY_STRING} ^search=([^&]+)$
RewriteRule ^ /Download\/free\/%1.html? [L,NE]
RewriteCond %{REQUEST_URI} !(\ )
RewriteRule ^ - [L,R]
RewriteRule ^(.*)\ (.*)$ /$1-$2 [L]