[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена русских букв на английские
web78
Здравствуйте.

Такая проблема.

Добавляю новость на сайте. Допустим название "123" или "english",
при генерировании ссылки имеем типа www.mysite.ru/n-123.htm или www.mysite.ru/n-english.htm .

Все работает и открывается нормально.

Если добавляем новость с названием на русском типа "русский", ссылка обрезается типа www.mysite.ru/n-.htm и при открытии ошибка 404.

Помогите пожалуйста.

htaccess :

AddDefaultCharset UTF-8
Options -Indexes
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch Konqueror no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>


php_flag register_globals off
php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
#php_flag display_errors off
php_value display_errors 1
php_value error_reporting 2047


RewriteEngine on
RewriteBase /board/


RewriteRule code.gif core/antirobot.php
RewriteRule flymail-([0-9]+).png core/flymail.php?id_mess=$1
RewriteRule ^login.html$ index.php?op=account&act=login
RewriteRule ^logout.html$ index.php?op=account&act=logout
RewriteRule ^register.html$ index.php?op=account&act=register
RewriteRule ^newpass.html$ index.php?op=account&act=newpass
RewriteRule ^accept,([0-9]+),([-a-zA-Z0-9_=]+)$ index.php?op=account&act=newpass&accept=yes&usid=$1&hash=$2
RewriteRule ^accept_rules.html$ index.php?op=cpanel&act=accept_rules
RewriteRule ^profile.html$ index.php?op=cpanel&act=profile
RewriteRule ^cpanel.html$ index.php?op=cpanel
RewriteRule ^cpanel-p([0-9]+).html$ index.php?op=cpanel&page=$1
RewriteRule ^cpanel-([0-9]+)-edit.html$ index.php?op=cpanel&group=edit&id_mess=$1
RewriteRule ^cpanel-([0-9]+)-del.html$ index.php?op=cpanel&group=del&id_mess=$1
RewriteRule ^cpanel-([0-9]+)-prolongation.html$ index.php?op=cpanel&group=prolongation&id_mess=$1
RewriteRule ^cpanel-del.html$ index.php?op=cpanel&group=del
RewriteRule ^goto-([0-9]+).html$ core/redirect.php?id=$1
RewriteRule ^ru.html$ core/changelang.php?l=ru
RewriteRule ^en.html$ core/changelang.php?l=en
RewriteRule ^city.html$ core/changecity.php
RewriteRule ^newlist.html$ index.php?op=newlist
RewriteRule ^newlist-p([0-9]+).html$ index.php?op=newlist&page=$1
RewriteRule ^c([0-9]+).html$ index.php?id_cat=$1
RewriteRule ^c([0-9]+)-p([0-9]+).html$ index.php?id_cat=$1&page=$2
RewriteRule ^c([0-9]+)-([0-9]+).html$ index.php?id_cat=$1&id_mess=$2
RewriteRule ^new.html$ index.php?op=add
RewriteRule ^([0-9]+)-new.html$ index.php?op=add&cat=$1
RewriteRule ^print([0-9]+)-([0-9]+).html$ index.php?op=print&id_cat=$1&id_mess=$2
RewriteRule ^vip([0-9]+).html$ index.php?op=vip&id_mess=$1
RewriteRule ^note.html$ index.php?op=note
RewriteRule ^note-p([0-9]+).html$ index.php?op=note&page=$1
RewriteRule ^noteprint.html$ index.php?op=noteprint
RewriteRule ^informers.html$ index.php?op=informers
RewriteRule ^rss.html$ index.php?op=rss_export
RewriteRule ^search.html$ index.php?op=search
RewriteRule ^contacts.html$ index.php?op=contacts
RewriteRule ^news.html$ index.php?op=news
RewriteRule ^news-p([0-9]+).html$ index.php?op=news&page=$1
RewriteRule ^n([0-9]+)-([-a-zA-Z0-9_]+).html$ index.php?op=news&id=$1&title=$2
RewriteRule ^addnews.html$ index.php?op=addnews
RewriteRule ^p([0-9]+).html$ index.php?op=content&id=$1
RewriteRule ^success.html$ a/pay.php?action=success
RewriteRule ^fail.html$ a/pay.php?action=fail
RewriteRule ^pages/([0-9]+)/?$ p$1.html
RewriteRule ^advertisement/nesting/([0-9]+)/kind/([0-9]+)/?$ c$1-$2.html
RewriteRule ^rss/?$ rss.html
RewriteRule ^contacts/?$ contacts.html
RewriteRule ^search/?$ search.html



Спустя 9 минут, 10 секунд (25.04.2011 - 20:45) Игорь_Vasinsky написал(а):
может регулярку эту переписать по кирилицу и латинский?

RewriteRule ^n([0-9]+)-([-a-zA-Z0-9_]+).html$ index.php?op=news&id=$1&title=$2

Спустя 5 минут, 41 секунда (25.04.2011 - 20:51) web78 написал(а):
Цитата (Игорь_Vasinsky @ 25.04.2011 - 17:45)
может регулярку эту переписать по кирилицу и латинский?

RewriteRule ^n([0-9]+)-([-a-zA-Z0-9_]+).html$ index.php?op=news&id=&title=

Я то тоже на нее смотрю, но как это дописать?

Спустя 2 минуты, 35 секунд (25.04.2011 - 20:53) neadekvat написал(а):
\w в регулярных выражениях означает все символы, из которых состоит слово.
Попробуйте заменить [-a-zA-Z0-9_] на \w. Но гарантии не даю никакой - особо с регулярками в .htaccess не мучался - все обрабатываю на уровне скриптов.

Спустя 4 минуты, 18 секунд (25.04.2011 - 20:58) Игорь_Vasinsky написал(а):
нувот по нубски если про\w не понятно:

RewriteRule ^n([0-9]+)-([-a-zA-Zа-яА-Я0-9_]+).html$ index.php?op=news&id=&title=

Спустя 4 минуты, 18 секунд (25.04.2011 - 21:02) neadekvat написал(а):
Игорь_Vasinsky, в русском языке ё и Ё когда-то, помнится, приходилось перечислять отдельно. Да и вряд ли твой вариант проще моего (но о работоспособности обоих я все еще сказать ничего не могу).

Спустя 2 минуты, 32 секунды (25.04.2011 - 21:04) Игорь_Vasinsky написал(а):
neadekvat
я как раз литературу, которую ты по линку дал почитываю.... этот момент учту. wink.gif

Спустя 1 минута, 27 секунд (25.04.2011 - 21:06) neadekvat написал(а):
Цитата (Игорь_Vasinsky @ 25.04.2011 - 22:04)
я как раз литературу, которую ты по линку дал почитываю.... этот момент учту.

Так не очень помню, но раз говорим о регэкспах, то, вероятно, речь о книге Фридла?

Спустя 1 минута, 26 секунд (25.04.2011 - 21:07) web78 написал(а):
RewriteRule ^n([0-9]+)-(\w+).html$ index.php?op=news&id=$1&title=$2

RewriteRule ^n([0-9]+)-([-a-zA-Zа-яА-Я0-9_]+).html$ index.php?op=news&id=$1&title=


RewriteRule ^n([0-9]+)-([-a-zA-Zа-яА-Я0-9_]+).html$ index.php?op=news&id=$1&title=$2

без результата

Спустя 2 минуты, 48 секунд (25.04.2011 - 21:10) neadekvat написал(а):
х его з.
Попробуйте так. Правда, уже себя неуютно чувствую.

^n([0-9]+)-([^\.]+).html$ index.php?op=news&id=$1&title=$2
^n([0-9]+)-(.*?).html$ index.php?op=news&id=$1&title=$2
^n([0-9]+)-(.*).html$ index.php?op=news&id=$1&title=$2

Спустя 9 минут, 34 секунды (25.04.2011 - 21:20) Игорь_Vasinsky написал(а):
neadekvat
Цитата
Так не очень помню, но раз говорим о регэкспах, то, вероятно, речь о книге Фридла?


она самая wink.gif

Спустя 6 минут, 33 секунды (25.04.2011 - 21:26) Игорь_Vasinsky написал(а):
а в БД кирилица как себя ведёт?

Спустя 11 часов, 59 минут, 30 секунд (26.04.2011 - 09:26) web78 написал(а):
Цитата (neadekvat @ 25.04.2011 - 18:10)
х его з.
Попробуйте так. Правда, уже себя неуютно чувствую.

^n([0-9]+)-([^\.]+).html$ index.php?op=news&id=$1&title=$2
^n([0-9]+)-(.*?).html$ index.php?op=news&id=$1&title=$2
^n([0-9]+)-(.*).html$ index.php?op=news&id=$1&title=$2

1 и 3 без результата
2 - ошибка 500 сайта

Проблем открыта.

Еще добавлю скрипт лежит в папке /board/

Спустя 17 минут, 10 секунд (26.04.2011 - 09:43) web78 написал(а):
Пробовал вот так:

RewriteRule ^n([0-9]+)\.html$ index.php?op=news&id=$1&title=$2

чтобы только номер новости отображался - все равно не хочет.

Спустя 8 минут, 30 секунд (26.04.2011 - 09:51) web78 написал(а):
Вот оно! Решение!!!

RewriteRule ^n([0-9]+)-([0-9]*).html$ index.php?op=news&id=$1&title=$2

Всем спасибо! Я - молодец!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.