Новое правило в ЧПУ

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем lordBlack, 25 фев 2009.

Статус темы:
Закрыта.
  1. lordBlack

    lordBlack

    Регистр.:
    29 ноя 2007
    Сообщения:
    620
    Симпатии:
    246
    Есть правило:
    PHP:
    RewriteEngine On
    RewriteRule 
    ^([A-Za-z0-9-]+)/?$ my.php?user=$[L]
    оно срабатывает как
    сайт.ру/my.php?user=Lordblack меняет на
    сайт.ру/lordBlack
    сайт вырос ггг появилось новая задача....как ее реализовать?

    сайт.ру/blocks.php?level=b&block=10 - идет вывод профиля с определенным именем - домустим LordBlack
    насколько реально заменить на:
    сайт.ру/b/LordBlack.html
    где b - level
     
    a-type и Psych нравится это.
  2. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    RewriteRule ^(.*)/([A-Za-z0-9-]+) /blocks.php?level=$1&block=$2

    но только block=10 должен содержать имя, а не номер, иначе htaccess его не обработает.
     
  3. lordBlack

    lordBlack

    Регистр.:
    29 ноя 2007
    Сообщения:
    620
    Симпатии:
    246
    но как-то это все таки реализуется....


    так я уже пробовал (RewriteRule ^(.*)/([A-Za-z0-9-]+) /blocks.php?level=$1&block=$2) -получается линк вида
    сайт.ру/b/10

    вообщем мне уже делал так чел.... но на старом хостинге... он что-то еще в скрипт добавлял....
    потом на хост сломали... и я восстановлися с отката а чел в армию ушел...
    вообщем хелп...

    Добавлено через 46 минут
    по идее если это на самом деле нужно в скрипт лезть то я могу как-то компенсировать время....
     
  4. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    Тебе нужно чтобы твой скрипт выдавал имя пользователя, а не номер! htaccess умеет обрабатывать по регуляторным выражениям, но он не может получить имя пользователя по номеру.
     
  5. lordBlack

    lordBlack

    Регистр.:
    29 ноя 2007
    Сообщения:
    620
    Симпатии:
    246
    сделал .... сайт.ру/b/LordBlack
    по правилу
    RewriteRule ^(.*)/([A-Za-z0-9-]+) /blocks.php?level=$1&block=$2

    не выводит ни одной картинки... хотя пути верные....
    <base href /> стоит ....
    проверил.... скопировал путь картинки в браузер....

    гг... вывалился на исходную
    http://www.сайт.ru/img/904381664.jpg

    гыыы вывалилось: уровень IMG и юзер 904381664.jpg




    все исправил - проблема решилась добавлением в htaccess в конце правила [L]
     
  6. lordBlack

    lordBlack

    Регистр.:
    29 ноя 2007
    Сообщения:
    620
    Симпатии:
    246
    Новая трабла....

    указанное выше правило:
    PHP код:
    PHP:
    RewriteEngine On 
    RewriteRule 
    ^([A-Za-z0-9-]+)/?$ my.php?user=$[L
    оно срабатывает как
    сайт.ру/my.php?user=Lordblack меняет на
    сайт.ру/lordBlack


    Но если у человека логин содержит пробел или _ , что кстати чаще - вываливает 404....

    где копать?
     
  7. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    переписал чуток регулярку, пошло с пробелом и подчеркиванием:
     
    lordBlack нравится это.
Статус темы:
Закрыта.