ITXrelay

Рейтинг
91
Регистрация
05.05.2010

Посмотрите в коде страниц - есть ли такая строка:

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);}

'[umka:
;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 я крутил как мне нужно, возможно здесь собака зарыта?

'[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+

Попробовал, все равно "+" (%2B) нивелирует:(

'[umka:
;8909243']А, ну всё верно, плюсик нужно заменять на %2B

Я не очень понял, ведь в регулярке для .htaccess прописано и для случая "%2B" и просто для "+", просто "+" у меня влезает в урле, когда, там присутствует элемент из двух и более слов через пробел, например "texas instruments" urlencode обрабатывает как "texas+instruments" и дальше именно в таком виде он идет в урл, а затем переносится в ЧПУшную структуру без потерь, то есть в этом случае все отлично работает. А вот обрезается именно "%2B" и мне кажется что дело именно в "%"

'[umka:
;8909188']Ничего не понял, но попробуйте так
RewriteRule ^tag/([0-9A-Za-z_\%2B\+]+)/$ tag.php?tag=$1 [NE]

Попробыввал - все равно, обрезает обработанный плюсик в урле (%2B)

arkadiy_a, спасибо, помогли

arkadiy_a:
# если на %23 заменить - сработает?

Попробывал как Вы написали:

RewriteRule glossary.php%23(.*)$ glossary/$1/ [R=301,L]

не работает

miker81, спасибо большое, помогли разобраться

Всего: 128