'[umka: ;8909487']"Нивелирует" — это немного не то :) Вы, наверное, имели в виду "аннигилирует"?
Возможно, после этого правила выполняются ещё какие-то. Поэтому в конце нужна буковка [L].
Попробуйте всё сделать в чистом виде.
Одно правило, и один пустой скрипт с echo $_SERVER['QUERY_STRING']
А потом добавляйте по одной строчке. Так вы найдёте причину.
Сделал так, как Вы сказали: очистил полностью .htacces прописал в нём только:
все равно вместо "HSPA+" получается "HSPA ", то есть вместо плюсика пустое место
echo $_SERVER['QUERY_STRING'] выдает tag=HSPA+
print_r( $_SERVER['argv']); выдает
Array
(
[0] => tag=HSPA
[1] =>
)
Хочу к тому же отметить, что в неЧПУшной версии я работал с $_GET следующим образом: $tag=mysql_real_escape_string($_GET['tag']); - а дальше $tag я крутил как мне нужно, возможно здесь собака зарыта?
'[umka: ;8909429']Всё ясно :)
Вот так напишите:
RewriteRule ^tag/([0-9A-Za-z_\+]+)/$ tag.php?tag=$1 [L]
%2B сервер сам преобразует в обычный плюсик
Во всяком случе, у меня с таким правилом скрипт tag.php показывает для двух uri
/tag/test+/
и
/tag/test%2B/
одиныковый $_SERVER['QUERY_STRING']:
tag=test+
'[umka: ;8909243']А, ну всё верно, плюсик нужно заменять на %2B
Я не очень понял, ведь в регулярке для .htaccess прописано и для случая "%2B" и просто для "+", просто "+" у меня влезает в урле, когда, там присутствует элемент из двух и более слов через пробел, например "texas instruments" urlencode обрабатывает как "texas+instruments" и дальше именно в таком виде он идет в урл, а затем переносится в ЧПУшную структуру без потерь, то есть в этом случае все отлично работает. А вот обрезается именно "%2B" и мне кажется что дело именно в "%"
Посмотрите в коде страниц - есть ли такая строка:
oncopy="return false;"
Я бы сделал так:
Если умеете, забейте контент в базу, и там правьте, либо можно написать легкую админку.
Если не умеете, то сделайте статических 15 страниц.
Есс-но в обоих случаях, надо сначала сверстать шаблон.
Вообщем, ради 15 страниц на CMS натягивать шаблон, ИМХО особого смысла нет
Также ещё момент, я посмотрел массив $_GET
в случае с Texas Instuments в урл идет Texas+Instruments, а сам массив $_GET:
Array
(
[tag] => Texas Instuments
)
В случае же с HSPA+ в урл идет HSPA%2B, а сам массив $_GET:
Array
(
[tag] => HSPA
)
то есть я очень сильно склоняюсь к тому, что обрезка идет именно в $_GET ибо там есть процент
ITXrelay добавил 05.05.2011 в 13:07
В итоге я сделал принципиально по-другому:
если в массиве $_GET есть пробел, он заменил его на "+", и все заработала как надо:) :
$tag=mysql_real_escape_string($_GET['tag']);
if (strpos($tag,' ')!==false){$tag=str_replace(' ','+',$tag);}
;8909487']"Нивелирует" — это немного не то :) Вы, наверное, имели в виду "аннигилирует"?
Возможно, после этого правила выполняются ещё какие-то. Поэтому в конце нужна буковка [L].
Попробуйте всё сделать в чистом виде.
Одно правило, и один пустой скрипт с echo $_SERVER['QUERY_STRING']
А потом добавляйте по одной строчке. Так вы найдёте причину.
Сделал так, как Вы сказали: очистил полностью .htacces прописал в нём только:
RewriteEngine on
RewriteRule ^tag/([0-9A-Za-z_\%2B\+]+)/$ tag.php?tag=$1 [L]
в файле tag.php прописал
echo $_SERVER['QUERY_STRING'];
print_r( $_SERVER['argv']);
все равно вместо "HSPA+" получается "HSPA ", то есть вместо плюсика пустое место
echo $_SERVER['QUERY_STRING'] выдает tag=HSPA+
print_r( $_SERVER['argv']); выдает
Array
(
[0] => tag=HSPA
[1] =>
)
Хочу к тому же отметить, что в неЧПУшной версии я работал с $_GET следующим образом: $tag=mysql_real_escape_string($_GET['tag']); - а дальше $tag я крутил как мне нужно, возможно здесь собака зарыта?
;8909429']Всё ясно :)
Вот так напишите:
RewriteRule ^tag/([0-9A-Za-z_\+]+)/$ tag.php?tag=$1 [L]
%2B сервер сам преобразует в обычный плюсик
Во всяком случе, у меня с таким правилом скрипт tag.php показывает для двух uri
/tag/test+/
и
/tag/test%2B/
одиныковый $_SERVER['QUERY_STRING']:
tag=test+
Попробовал, все равно "+" (%2B) нивелирует:(
;8909243']А, ну всё верно, плюсик нужно заменять на %2B
Я не очень понял, ведь в регулярке для .htaccess прописано и для случая "%2B" и просто для "+", просто "+" у меня влезает в урле, когда, там присутствует элемент из двух и более слов через пробел, например "texas instruments" urlencode обрабатывает как "texas+instruments" и дальше именно в таком виде он идет в урл, а затем переносится в ЧПУшную структуру без потерь, то есть в этом случае все отлично работает. А вот обрезается именно "%2B" и мне кажется что дело именно в "%"
;8909188']Ничего не понял, но попробуйте так
RewriteRule ^tag/([0-9A-Za-z_\%2B\+]+)/$ tag.php?tag=$1 [NE]
Попробыввал - все равно, обрезает обработанный плюсик в урле (%2B)
arkadiy_a, спасибо, помогли
# если на %23 заменить - сработает?
Попробывал как Вы написали:
RewriteRule glossary.php%23(.*)$ glossary/$1/ [R=301,L]
не работает
miker81, спасибо большое, помогли разобраться