Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Чпу с помощью htaccess - половина ссылок не работает

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Шмайсер
Отправлено: 08 Февраля, 2012 - 09:12:07
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Здравствуйте! Делаю чпу ссылки с помощью .htaccess
вот его код
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. php_flag display_errors off
  3. AddDefaultCharset utf-8
  4. ErrorDocument 404 /error.html
  5. RewriteEngine on
  6. RewriteBase /
  7.  
  8. RewriteRule ^index\.php$ http://mysite.ru/ [R=301,L]
  9. RewriteRule ^about/?$ about.php [QSA,L]
  10. RewriteRule ^partners/?$ partners.php [QSA,L]
  11.  
  12. RewriteRule ^([a-zA-Z0-9]+)-([0-9]*)/?$ razdel.php?trans=$1&idrz=$2 [QSA,L]
  13.  

вот ссылка, которую надо отЧПУшить
PHP:
скопировать код в буфер обмена
  1.  
  2. echo '<a href="'.$trans_name_razdel.'-'.$id_razdel.'">'.$name_razdel.'</a><br />';
  3.  

в ней $trans_name_razdel название раздела (берется из БД) и прогоняется через функцию транслита (ее код ниже) и $id_razdel - идентификатор раздела, нужен для передачи скрипту.
вот функция транслитерации
PHP:
скопировать код в буфер обмена
  1.  
  2. function translite ($st)
  3.  
  4. {
  5.  
  6.  
  7.  
  8.     $st =strtr($st,
  9.        
  10.         array(
  11.         "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
  12.         "Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
  13.         "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
  14.         "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
  15.         "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
  16.         "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
  17.         "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
  18.         "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
  19.         "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
  20.         "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
  21.         "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
  22.         "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
  23.         "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
  24.                
  25.                 )
  26.     );
  27.  
  28.             $st =preg_replace('((\W+))', ' ', $st);
  29.                         $st =str_replace('_', ' ', $st);
  30.                         $st =trim($st);
  31.                         $st =preg_replace('((\s+))', '-', $st);
  32.                         $st =strtolower($st);
  33.                         return $st;
  34.  
  35. }
  36.  

Проблема в том, что если в названии раздела одно слово, без пробелов, запятых и проч. то все работает, ссылка принимает вид
http://mysite[dot]ru/razdelname-1
и пользователь попадает в нужный раздел

если название раздела такое Раздел про сказки,
то ссылка принимает вид
http://mysite[dot]ru/razdel-pro-skazki-1
и выкидывает на 404 ошибку
Подскажите, что и где поправить?

(Отредактировано автором: 08 Февраля, 2012 - 09:13:02)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB