Как лучше?

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем Smit_, 16 авг 2010.

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

    Smit_ Создатель

    Регистр.:
    1 мар 2010
    Сообщения:
    19
    Симпатии:
    0
    Появились вопросы:
    1. Правильно ли я написал? Как лучше вообще?
    RewriteRule ^[a-zA-Z0-9/]+$ index.php -
    Это для страниц, которые могут содержать в url только цифры, буквы, /
    2. Как выдавать страницы не существует, если ссылка содержит GET-параметры? типа localhost/test/?id=5.
    3. Раньше я делал сайты без ЧПУ и мне приходилось работать с GET-параметрами, а теперь хочу избавиться от такого варианта и работать с содержимым url (парсить url и получать те же параметры) вот так:
    $u = $_SERVER['REQUEST_URI'];
    $parts = explode('/', $_SERVER['REQUEST_URI']);
    Какие будут мнения на счет такого варианта (преимущества и недостатки)
    4. Как сделать несколько правил RewriteRule для разных адресов (чтобы обрабатывались разными скриптами), типа:
    localhost/test/articles/214/ - если после test/ идет articles/, то обрабатывать скриптом articles.php, а если что-то другое, то index.php
     
  2. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    вместо ^[a-zA-Z0-9/] я пишу ^([^/]+)
    так сделаноу меня
    PHP:
    RewriteRule ^index.html$           /index.php [NC]
    RewriteRule ^([^/]+)\.html$        /index.php?x=$[NC]
    RewriteRule ^([^/]+)/([^/]+)\.html$  /index.php?x=$1\&task=$[NC]
    2 а какая разница
    в пхп скрипте проверка если нет такого то своя страница
    банально если фаил существует то выводим его если нет то выводи свою страницу с ошибкой, если вообще левый адрес пишет юзвер но на вашем домене то свои ошибки
    PHP:
    ErrorDocument 400 /400.php
    ErrorDocument 404 
    /404.php
    3 это
    не ЧПУ

    ЧПУ это
    комбинация
    кода в ПХП при формировании ссылок и .htaccess

    .htaccess
    PHP:
    RewriteRule ^registration/([^/]+)/([^/]+)/([^/]+)\.html$        /index.php?x=registration\&task=$1\&ulogin=$2\&ucode=$[NC]
    RewriteRule ^registration/([^/]+)/([^/]+)/([^/]+)/index.html$   /index.php?x=registration\&task=$1\&ulogin=$2\&ucode=$[NC]

    RewriteRule ^restoration/([^/]+)/([^/]+)/([^/]+)\.html$         /index.php?x=restoration\&task=$1\&ulogin=$2\&ucode=$[NC]
    RewriteRule ^restoration/([^/]+)/([^/]+)/([^/]+)/index.html$    /index.php?x=restoration\&task=$1\&ulogin=$2\&ucode=$[NC]

    набор ссылок соотвествующий этим правилам
    PHP:
    // LINK
            
    'action' => array(
                
    XPAGE "?x=registration",
                
    WWW "registration.html",
                
    WWW "registration/index.html",
            ),


            
    'action' => array(
                
    XPAGE "?x=registration",
                
    WWW "registration.html",
                
    WWW "registration/index.html",
            ),
            
    'captcha' => array(
                
    XPAGE "?x=registration&task=captcha",
                
    WWW "registration/captcha.html",
                
    WWW "registration/captcha/index.html",
            ),

           
    'accept' => array(
                
    XPAGE "?x=registration" "&task=form",
                
    WWW "registration/form.html",
                
    WWW "registration/form/index.html",
            ),

            
    'auto' => array(
                
    XPAGE "?x=registration&task=activation&login={login}&code={code}",
                
    WWW "registration/activation/{login}/{code}.html",
                
    WWW "registration/activation/{login}/{code}/index.html",
            
    'protect' => array(
                
    XPAGE "?x=registration&task=protect",
                
    WWW "registration/protect.html",
                
    WWW "registration/protect/index.html",
    ),

    это куски кода из моей CMS


    4 просто

    PHP:

    RewriteRule 
    ^registration/([^/]+)/([^/]+)/([^/]+)\.html$        /registration.php?x=registration\&task=$1\&ulogin=$2\&ucode=$[NC]

    RewriteRule ^login/([^/]+)/([^/]+)/([^/]+)\.html$         /login.php?x=login\&task=$1\&ulogin=$2\&ucode=$[NC]

    RewriteRule ^forum/([^/]+)/([^/]+)/([^/]+)/index.html$    /forum.php?x=forum\&task=$1\&ulogin=$2\&ucode=$[NC]


     
    Smit_ нравится это.
  3. olmi.little

    olmi.little Постоялец

    Регистр.:
    13 авг 2010
    Сообщения:
    52
    Симпатии:
    9
    вопросы 1-3:
    посмотри для сравнения htaccess движка DLE - там практически весь основной набор используемых правил - я по данному htaccess училась свои делать раньше. :)
     
Статус темы:
Закрыта.