Такая проблема.
Добавляю новость на сайте. Допустим название "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 не мучался - все обрабатываю на уровне скриптов.
Попробуйте заменить [-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=
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
я как раз литературу, которую ты по линку дал почитываю.... этот момент учту.
я как раз литературу, которую ты по линку дал почитываю.... этот момент учту.
Спустя 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
без результата
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
Попробуйте так. Правда, уже себя неуютно чувствую.
^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
Цитата |
Так не очень помню, но раз говорим о регэкспах, то, вероятно, речь о книге Фридла? |
она самая
Спустя 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
чтобы только номер новости отображался - все равно не хочет.
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
Всем спасибо! Я - молодец!
RewriteRule ^n([0-9]+)-([0-9]*).html$ index.php?op=news&id=$1&title=$2
Всем спасибо! Я - молодец!