Apache RewriteRule с амперсандом в новом URL

#regex #apache #.htaccess #mod-rewrite #url-rewriting

#регулярное выражение #apache #.htaccess #мод-перезапись #url-перезапись

Вопрос:

Я попытался переписать этот URL

https://www.test.com/blog/post/41/postname.html

Для

https://www.test.com/content.php?coId=11amp;postId=41

Автор:

 RewriteCond %{REQUEST_URI} (.*)/blog/post/([0-9]*)/(.*).html$
RewriteRule (.*) /content.php?coId=11amp;wpPostId=%2 [QSA,L]
  

Однако амперсанд в RewriteRule, вероятно, неправильно экранирован, и я не нашел никакого решения, как это сделать. Согласно тестеру htaccess на https://htaccess.madewithlove.be оно преобразуется в

 https://www.test.com/content.php?coId=11416wpPostId=41
  

это означает, что амперсанд заменяется на ‘416’.

Ответ №1:

Для этого вы можете использовать это простое правило:

 RewriteRule ^blog/post/([^/] )/[w-] .html$ index.php?coId=11amp;wpPostId=$1 [QSA,L,NC]
  

Обязательно протестируйте его в новом браузере, чтобы избежать использования старого кэша браузера.