разрешить специальные символы в URL - PullRequest
0 голосов
/ 14 июня 2011

Я хочу разрешить специальные символы в URL
мой htaccess код

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^blog/?$ SocialNetwork/blog.php [L]
RewriteRule ^blog/(\d+)/?$ SocialNetwork/blog.php?id=$1 [L]
RewriteRule ^blog.php/(\d+)/?$ SocialNetwork/blog.php?id=$1 [L]
RewriteRule ^blog.php/(\d+)/([A-Za-z0-9-_[]]+)/?$ SocialNetwork/blog.php?id=$1&title=$2 [L]
</IfModule>

работает на

blog/1
blog/1/hii
blog/1yooo_title

но не работает для

blog/1/[hii-this is [] title

Ответы [ 3 ]

2 голосов
/ 14 июня 2011

В вашем последнем правиле перезаписи попробуйте экранировать квадратные скобки.Также, если вам нужно сопоставить пробелы, вы должны включить туда \ s:

^blog.php/(\d+)/([A-Za-z0-9-_\[\]\s]+)/?$ 

Или, возможно, рассмотрите более простой способ, который принимает в заголовке что-либо:у вас не должно быть пробелов в ваших URL.Они должны быть экранированы до "+" или% 20.Таким образом, в зависимости от этого ваше регулярное выражение изменится, кроме последнего, которое я предложил, должно работать.

0 голосов
/ 14 июня 2011

только буквенно-цифровые символы, специальные символы "$ -_. +! * '()," И зарезервированные символы, используемые для их зарезервированных целей, могут использоваться в URL-адресе без кодирования.

http://www.ietf.org/rfc/rfc1738.txt

0 голосов
/ 14 июня 2011

Я почти уверен, что вы не можете использовать пробелы в URL.Когда-либо.

...