重写规则url字符替换

时间:2012-11-02 00:04:57

标签: .htaccess replace rewrite character

如何在我的网址中替换+。我在htacces中添加了什么代码来摆脱+并用减号替换它。

RewriteCond %{QUERY_STRING} ^search=([^&]+)$
RewriteRule ^ http://mysite.com\/Download\/free\/%2.html? [R,L,NE]

如果我输入包含空格的搜索,则每个空格都会变为+,我想要 - 。

1 个答案:

答案 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]