使用htaccess编码url

时间:2014-04-13 20:19:13

标签: php regex .htaccess http-status-code-301

我正在尝试转换

www.domain.com/tag/c++  --> www.domain.com/index.php?qa=tag&qa_1=c++

我使用此代码:

RewriteRule ^(.*)/(.*)/?$ /index.php?qa=$1&qa_1=$2 [R=301,L]

但它将页面重定向到c标签,因为正常工作必须先将其转换为%2B%2B

它也会错误地重定向此页面:

www.domain.com/tag/c%2B%2B

我也使用此代码重定向用户页面,他们有一些字符,如/ space和...

使用htaccess执行此操作的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

添加NE标志应该这样做。它将阻止特殊字符被编码。

  

默认情况下,特殊字符,例如&和?,例如,将   转换为等效的十六进制代码。使用[NE]标志可以防止   发生的事情。

RewriteRule ^(.*)/(.*)/?$ /index.php?qa=$1&qa_1=$2 [R=301,L,NE]

它应该允许您访问www.domain.com/tag/c++< - 该网址并被重定向到www.domain.com/index.php?qa=tag&qa_1=c++