2

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

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

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

4

1 回答 1

4

我假设 URL: 的bla+bla+bla部分http://mysite.com/Download/free/bla+bla+bla.html来自查询字符串search=的值。根据您可能拥有的其他规则,您可以通过 2 种不同的方式来解决此问题。您可以先从查询字符串中删除所有空格,然后再将其重定向到 .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]
于 2012-11-02T10:38:17.007 回答