За последние 24 часа нас посетили 61011 программистов и 1744 робота. Сейчас ищут 1026 программистов ...

Вопрос по ЧПУ(Friendly URL)

Тема в разделе "PHP для новичков", создана пользователем ssh, 31 июл 2009.

  1. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Как это реализовывается? На стороне хостинг провайдера или можно как то это обойти и реализовать самому?
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Веб-сервер какой?
     
  3. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Apple
    apache
     
  4. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Можете попробовать через .htaccess настроить mod_rewrite, если он конечно включен на стороне хостинга.
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    В httpd.conf установить директиву AllowOverride из None установить в All (там их несколько, каждая отвечает за разные директории).
    Убрать комментарий (знак #) перед строкой LoadModule rewrite_module modules/mod_rewrite.so
    Потом, в корне сайта создать файл .htaccess и написать в него:

    Код (Text):
    1. # Включаем
    2. RewriteEngine On
    3.  
    4. # Правило
    5. RewriteRule ^url$ физический-файл
    Ну а дальше читаем:
    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

    Синтаксис аналогичен регулярным выражениям PCRE.
     
  6. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    У меня отображаются папки bin, etc, htdocs, logs в них нету ни httpd.conf ни .htaccess.
     
  7. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    .htaccess - вам нужно создать, а .httpd.conf - обычно его редактирование возможно только со стороны сервера (в Вашем случае хостинга). А так же - некоторые обозреватели "не видят" .htt* файлов.
     
  8. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    neverlose
    Придётся обращаться к интернет хостеру чтобы подправил httpd.conf , т.к. в моём пакете нету поддержки Secure Shell.
     
  9. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Не надо ни к кому обращаться.
    Создайте файл .htaccess в корне своего сайта и напишите в него:

    .htaccess
    Код (Text):
    1. <IfModule mod_rewrite.c>
    2.     RewriteEngine On
    3.    
    4.     RewriteRule ^check-rewrite/?$ index.php
    5. </IfModule>
    Дальше в браузере набрать http://example.com/check-rewrite
    http://example.com заменить на ваш сайт, естественно.
    Если выдаст ошибку 404, то, соответственно, использовать mod_rewrite нельзя, если же покажет index.php, то всё в порядке.
     
  10. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Apple
    Сработало, только в корневой каталог не стал записывать .htaccess, т.к. он там уже есть со своими настройками, только он не видимый(не скачать, не просмотреть, только заменить можно). Затестировал так http://example.com/TEST/check-rewrite перед этим, конечно создал папку TEST.

    Не подскажете как стянуть .htaccess если нет поддержки Secure Shell.
     
  11. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Попробуйте с помощью FileZillы.
     
  12. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Создаем РНР-файлик:

    PHP:
    1. <?php
    2.  
    3. if(isset($_GET['do'])) {
    4.     switch($_GET['do']) {
    5.         case "remove" : {
    6.              if(@unlink('.htaccess')) echo "Success"; else echo "Unsuccessful";
    7.         } break;
    8.         case "view" : {
    9.              echo file_get_contents('.htaccess');
    10.         } break;
    11.     }
    12. }
    13.  
    14. ?>
    Должен же он читать файлы своего же каталога.