Если значение должно прийти через неизмененном, то да, вы должны использовать побег. В значении параметра URL-запроса пробел может быть закодирован как +
или %20
. mod_rewrite, как правило, делает это для вас, если внешняя версия была надлежащим образом написана.
Во внешней версии URL, только 20% могут быть использованы:
http://www.store.com/products/CD%20s-Dvd%20s
http://www.store.com/products.php?category=CD%20s-Dvd%20s
потому, что в URL-путь части а +
буквально означает плюс.
(Вы уверены, что хотите место там? «Компакт-дисков DVD» без пробелов, казалось бы, лучшее название.)
Это нетривиально, чтобы получить произвольные строки через от пути частично параметр. Помимо проблем с экранированием, у вас есть проблемы с /
, которые должны быть закодированы как %2F
в части пути. Однако по соображениям безопасности Apache по умолчанию блокирует любой URL-адрес, содержащий %2F
. (\
аналогично затронуты Windows.) Вы можете отключить это поведение с помощью конфигурации AllowEncodedSlashes
, но это означает, что если вы хотите быть переносным, вы не можете использовать «CD/DVD» в качестве названия категории.
По этой причине, и поскольку наличие в вашем URL-адресе %20
s является немного уродливым, строки обычно превращаются в «пули» перед тем, как помещаться в URL-адрес, где все спорные символы ASCII, которые приведут к видимые% -escap заменяются символами наполнителя, такими как дефис или подчеркивание. Это означает, что вы не можете округлить строку, поэтому вам нужно сохранить отдельный заголовок и пул в базе данных, чтобы иметь возможность искать правильный объект для данного пула или просто использовать дополнительный идентификатор в URL-адресе (например, Stack Overflow).
И как мы это знаем? –