За последние 24 часа нас посетили 18475 программистов и 1711 роботов. Сейчас ищут 850 программистов ...

Относительный путь

Тема в разделе "PHP для новичков", создана пользователем Nik-Pik, 23 май 2010.

  1. Nik-Pik

    Nik-Pik Активный пользователь

    С нами с:
    21 мар 2009
    Сообщения:
    98
    Симпатии:
    0
    Здравствуйте, уважаемые частники форума.

    Вопрос следующий. Решил я изменить адреса своего сайта на ЧПУ. Для этого в файле .htaccess прописал.

    Код (Text):
    1. RewriteRule ^art/([0-9]+)/? articles.php?artid=$1 [L]
    т.е. при обращении site.ru/art/1 это будет идентично site.ru/articles?artid=1

    Все бы хорошо, но теперь сервер понимает art как подкаталог и не подгружается файл стиля и прочие скрипты, ладно можно будет и абсолютный путь прописать, но как быть с изображениями, не прописывать же также везде абсолютный путь, да все ссылки когда имеющие вид /index.php приобретают вид /art//index.php

    Как решал? Создал отдельный файл, где прописал константу:

    PHP:
    1. define( 'SITE_ROOT', $_SERVER['SERVER_NAME'] );
    Его я include и затем в исполняемом файле прописал $dir = (dirname(SITE_ROOT));

    И при подключении вот так:
    HTML:
    1. <link rel="stylesheet" type ="text/css" href="<?php echo $dir .'/style.css'; ?>">
    Но все равно не работает при обращении site.ru/art/1

    Подскажите, пожалуйста, в чем я не прав и в каком направлении действовать дальше?
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    HTML:
    1. <base href="http://<?=$_SERVER['HTTP_HOST'];?>">
    2. <link rel="stylesheet" type ="text/css" href="/style.css">
     
  3. Nik-Pik

    Nik-Pik Активный пользователь

    С нами с:
    21 мар 2009
    Сообщения:
    98
    Симпатии:
    0
    Mr.M.I.T. спасибо огромное, не ожидал, что на столько все просто.
     
  4. Nik-Pik

    Nik-Pik Активный пользователь

    С нами с:
    21 мар 2009
    Сообщения:
    98
    Симпатии:
    0
    Можно тогда еще вопрос в тему?

    Раз уже сделали нормальный вид адресов, как тогда прописать грамотно переадресацию для страниц типа site.ru/articles?artid=1 в site.ru/art/1
     
  5. Hast

    Hast Активный пользователь

    С нами с:
    23 май 2010
    Сообщения:
    5
    Симпатии:
    0
    RewriteRule ^articles?artid=([0-9]+)/? art/$1 [L]
    как-то так
     
  6. Nik-Pik

    Nik-Pik Активный пользователь

    С нами с:
    21 мар 2009
    Сообщения:
    98
    Симпатии:
    0
    ну здесь вообще не пахнет передресацией
     
  7. Nik-Pik

    Nik-Pik Активный пользователь

    С нами с:
    21 мар 2009
    Сообщения:
    98
    Симпатии:
    0
    Дело в том что два адреса, по которым открывается сайт, будут неравноправны. Все ссылки в интернете будут по-прежнему вести на старый адрес, поисковые машины будут показывать старый адрес и для появления в индесе может потребоваться много времени, да и «показатели качества» сайта, такие как PR будут принадлежать старому адресу, а у нового они будут нулевыми. Т.е. поисковику надо указать, что страница с адресом http://www.site.ru/articles.php?type=dir&id=number имеет теперь адрес http://www.site.ru/dir/number/ и старый адрес исключить так, чтобы страница с новым адресом появилась в выдаче на том же месте, где и старая.

    Конечно, это надо было сделать раньше (до индексирования поисковиком), но....

    P.S.: Извините, если изложил не понятным языком.
     
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Делать надо редирект на новую ссылку с 301м заголовком, если я правильно помню.
     
  9. Nik-Pik

    Nik-Pik Активный пользователь

    С нами с:
    21 мар 2009
    Сообщения:
    98
    Симпатии:
    0
    Да, правильно, но как составить правило в .htaccess?

    RewriteRule ^старые адреса$ новые адреса [R=301,L]
     
  10. Nik-Pik

    Nik-Pik Активный пользователь

    С нами с:
    21 мар 2009
    Сообщения:
    98
    Симпатии:
    0
    Имеется в виду не одна страница, а массовая смена url