За последние 24 часа нас посетили 62907 программистов и 1743 робота. Сейчас ищет 951 программист ...

Не работает htaccess ЧПУ

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

  1. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    У меня в данный момент на сайте такие ссылки:
    http://musite.ru/news.php?id=936

    Хотелось бы получить такую ссылку в адресной строке:

    http://musite.ru/news/936/

    В htaccess прописал:
    Код (Text):
    1.  
    2. RewriteEngine on
    3. RewriteBase /
    4. RewriteRule ^news/([0-9]+)/? news.php?id=$1 [L]
    И ничего не происходит. В чем ошибка?
     
  2. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Если перехожу по ссылке http://musite.ru/news/936/ то все норм перекидывает куда надо, но как сденлать так, чтобы в списке новостей, адреса ссылок тоже были ЧПУ.
    Они у меня в таком виде: http://musite.ru/news.php?id=936, но если вручную вбить ссылку ЧПУ то переходит норм. Никак не могу сдлеать чтобы ссылки и выглядели как ЧПУ.
     
  3. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    где у тебя формируются ссылки ссылки, там и нужно переделывать :)))
     
  4. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Ссылки формируются в index.php:
    PHP:
    1.  
    2. <?php $post = mysql_query ("SELECT *, DATE_FORMAT(date,'%d.%m.%Y %H:%i') AS date FROM news WHERE kat_news<5 ORDER BY id DESC LIMIT 5",$db);
    3. while ($posts = mysql_fetch_array ($post))
    4. {
    5. ?>
    6.  
    7. <a href='news.php?id=<?php echo $posts ['id']?>'><?php echo $posts ['title'] ?></a>
    8.  
    9. <?php } ?>
    10.  
    Вот так формируются.
     
  5. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    и в чём проблема переделать
    на
    PHP:
    1. <a href='news/<?php echo $posts['id']; ?>/'><?php echo $posts['title']; ?></a>
    ?
     
  6. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Ну проблем то никаких, тогда для чего все эти действия в htaccess??
     
  7. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    greenzlat
    а если ты уберёшь RewriteMode из .htaccess, то ссылки типа /news/123/ работать не будут
     
  8. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Есть 2 ссылки:
    http://test.off/pesni/349
    http://test.off/autors/1

    В .hnaccess такое:
    AddDefaultCharset windows-1251
    RewriteEngine on
    RewriteRule ^pesni/([0-9]+)$ pesni.php?autor=$1
    RewriteRule ^autors/([0-9]+)$ autors.php?bukva=$1

    Первая ссылка http://test.off/pesni/349 норм работает, а вторая не хочет. Невозможно отобразить страницу, хотя в таком виде: http://test.off/autors.php?bukva=1 работает норм.
     
  9. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    посмотри в сторону ключей, попробуй поставить ключ [L] в конце каждой строки (точно не помню, гуглить лень)
     
  10. MaXyC_Web_Studio

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

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    мне почему то тоже в первый день знакомства с ЧПУ казалось, что если я подправлю в htaccess то на сайте ссылки подправятся по правилам mod_rewrite

    перенаправлять запросы похожие на /news/123/
    туда куда тебе надо, т.е. news.php?=123
     
  11. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Это у меня получилось. Но теперь хочу сделать ссылку в транслите:
    Была такая ссылка: pesni_text.php?pesni=1, где 1 - это id песни.
    А хочу сделать такую: pesni_text/nazvaniepesni
    В htaccess написал такое правило:
    Код (Text):
    1. RewriteRule ^pesni_text/([a-z0-9]+)$ pesni_text.php?pesni=$1
    В файле ссылки прописал так:
    HTML:
    1. <a href="/pesni_text/<?php echo $pesni['link'];?>"> <?php echo $pesni['title_pesni'];?> </a>
    где $pesni['link'] - в БД есть поле, где храню транслит названия песни.
    Сервер выдает ошибку: Not Found
    The requested URL /pesni_text/aria_ivana was not found on this server.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    greenzlat
    чел, ты вот это все мутишь, а проще жить с $_SERVER['REQUEST_URI'] и все запросы любые направлять на index.php