вопросы ЧПУ, Mod_rewrite, Htaccess

Тема в разделе "Веб-серверы - Администрирование", создана пользователем Kauperwood, 26 фев 2011.

  1. Kauperwood

    Kauperwood Гость

    Хелло! Возникли проблемы с написанием ЧПУ, а точнее непонятки. у меня убунта, в файле /etc/apache2/sites-available/default стоят AllowOverride All.
    Непонятка1: Лезу создавать .htaccess в корневой папке, создаю, а он исчезает (даже через ls в терминале не видно), создаю новый файл .htaccess в другой папке(в той же не дает создать) копирую в ту же папку - предлагает заменить! Он работает но его вообще не видно, неудобно его редактировать однако. :mellow:
    Непонятка2: У меня к index.php подключен callbacks.php в котором через свич инклудяться html статьи. Строка выглядит "www.site.net/index.php?action=servise", хочу естественно "www.site.net/servise". Читал как делать ЧПУ, народ предлагает делать через .htaccess в несколько строчек, запустил phpinfo() - mod_rewrite в модулях есть. Дальше не все понятно, пробую, не выходит, подвис на этой теме, спасибо что читаете этот пост. Движка у меня нет, проблема сто раз уже решалась наверно, но все же, как написать правильно в .htaccess? За правильный ответ репу качну 100%. Подскажи добрый человек.
     
  2. 1ive

    1ive Well-Known Member
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    0
    В .htaccess написать:

    Код (PHP):
    RewriteEngine on # включает mod_rewrite
    RewriteRule ^([-a-zA-Z0-9_]+)/? index.php?action=$1 [L]
    И тогда www.site.net/servise будет работать как www.site.net/index.php?action=servise
     
  3. Kauperwood

    Kauperwood Гость

    Верно, но он почему то дает мне 500 Internal Server Error.
    С чем ето может быть связано?
     
  4. 1ive

    1ive Well-Known Member
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    0
    Можно полностью содержание .htaccess сюда?
     
  5. Kauperwood

    Kauperwood Гость

    эти 2 строчки и все, кроме них ничего больше не добавлял.
     
  6. 1ive

    1ive Well-Known Member
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    0
    Есть еще один способ, но тут придется указывать домен (не всегда удобно, если доменов несколько)

    Код (PHP):
    RewriteEngine on #можно попробовать не писать, если по умолчанию включено.
    RewriteCond %{REQUEST_URI} ^/([-a-zA-Z0-9_]+)$
    RewriteRule .* http://site.ru/?action=%1 [R=301,L]
     
  7. Kauperwood

    Kauperwood Гость

    попробовал - вывод зделал, решения нормальные, должно роботать. Ошибку он уже не дает, а попросту дает страницу про автора, так как будто я не указал какой то из внутренних адресов ниже

    У меня вот такой нубский код обрабатывает метатеги, и если я не укажу какой то либо запрос "action" в этом файле, сервер мне возвращает только одну страницу, почему то статью про автора (.htaccess та же ситуация, - дает одну страницу ) :
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">titles.php</div></div><div class="sp-body"><div class="sp-content">
    Код (PHP):
     
    $names = ($_GET['action']);
    if ($names == ($_GET['action']="")) {$t = "Морда"; $m="Лицо";$k="что я хочу тут видеть.";$r="index,follow";}
    elseif ($names == ($_GET['action']="hosting")) { $t = "Хостинг"; $m="хостинг"; $k="хосты";$r="index,follow";}
    elseif ($names == ($_GET['action']="sevenways")){ $t = "Способы похудеть";$m="Кто хочет тот худеет."; $k="кушайте ягоды.";$r="index,follow";}
    //// обычные страницы
    elseif ($names == ($_GET['action']="about_grub2")){$noparams = "тут пусто";$r="noindex,nofollow";}
    elseif ($names == ($_GET['action']="about_partitions")){$noparams = "тут пусто";$r="noindex,nofollow";}
    elseif ($names == ($_GET['action']="kontakts")){$noparams = "тут пусто";$r="noindex,nofollow";}
    //// страницы что обрабатываються через js
    подключаемый файл такой:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">callbacks.php</div></div><div class="sp-body"><div class="sp-content">
    Код (PHP):
    switch($_GET['action']){
    ////...
    case 'about_autor':
    include('content/active/about_autor.html');
    break;

    default:
    include('content/all/the_morda.html');
    break;
    if (isset($_GET['action'])){
    $to = $_GET['action'];
    if (strpbrk($to, '.?/:*<>')) die('символы ., ?, /, :, *, <, > в запросе запрещены');
    }
    }
    Получаеться что .htacces сработал, но тогда получаеться перестает работать система с метатегами и возвращает 1 страницу (первое что пришло в голову).
    Может быть бок в этом?
     
  8. 1ive

    1ive Well-Known Member
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    0
    Тоесть
    www.site.ru/hosting (www.site.net/index.php?action=hosting)
    www.site.ru/sevenways (www.site.net/index.php?action=sevenways)
    и т.д. - отправляют на
    www.site.ru/kontakts (www.site.net/index.php?action=kontakts)
    ??
     
  9. Kauperwood

    Kauperwood Гость

    просто возвращает одну и ту же страницу куда бы я не нажимал (это наверно потому что перестает работать скрипт с мета-тегами)
     
  10. Kauperwood

    Kauperwood Гость

    Вроде разобрался. Забыли одну строчку!
    Код (PHP):
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*)\.htm$ /index.php?action=$1
    решение увидел через генератор http://www.webmaster-toolkit.com/mod_rewri...generator.shtml

    таким способом получаться ссылки вида : "www.site.net/page.htm"


    ps. теперь самой вершиной было бы еще избавиться от росширения .htm :mellow:

    мысли вслух: вот не пойму почему если убираю ".htm" ставлю "/" или вообще ничего не ставлю - тогда у меня падает ксс))
    мысли вслух 2: хм.. роботы наверно тоже проходят через .htacces, наверно им пофиг))
     
  11. Kauperwood

    Kauperwood Гость

    как на локалхосте пользоваться?
     
  12. 1ive

    1ive Well-Known Member
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    0
    "избавиться от росширения .htm"
    Просто убрать .htm и ссылки на ксс (и на все остальное типа js) сделать относительно корня сайта ("/styles/style.css")
     
  13. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    RewriteEngine on # включает mod_rewrite
    RewriteRule ^([-a-zA-Z0-9_]+)/? index.php?action=$1 [L]

    вот это выдает ошибку пицот потому что регулярка должна быть такая
    RewriteRule ^([-a-zA-Z0-9_]+)$ index.php?action=$1 [L]
    если на то пошло..

    Дальше топик не читал.
     
  14. 1ive

    1ive Well-Known Member
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    0
    Упс.
    Видно опечатался. :mellow:
     
  15. Kauperwood

    Kauperwood Гость

    вот на досуге вопросик появился, вобщем в папке сайта лежит файлик текстовый в котором служебная информация не для глаз так скзать.
    Так вот переименовать файл и закрыть доступ в папку без проблем через .htaccess. А допустим если имя файла известно, он легко открываеться не смотря на закрытый доступ к самой папке.
    Пробовал для файла
    Код (Text):
    <Files *.txt>
    Deny from all
    </Files>
    и еще несколько вариантов, но не дают они ничего, файл открываеться если знать его имя.
    Вопрос как запретить через .htaccess открывать файл, или эта задача другим путем решается?
     
  16. Kauperwood

    Kauperwood Гость

    все расчехлился, надо менять расширение txt.
    Почему? потому как сказал один господин : .txt файлы кеширует акселератор статического содержимого сайта,
    Интересная фраза однако)
     
  17. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    как все сложно. Да поставить просто расширение php файлу. Или, если принуипиально - запаролить директорию. Как поставить пароль на папку описано в гугле.
     
  18. Kauperwood

    Kauperwood Гость

    так и сделал, поменял на php, - единственное так это то что если его в браузере открыть, на новую строку не переводит, все в ряд пока экран не заполниться.
     
Загрузка...
Похожие Темы - вопросы ЧПУ Mod_rewrite
  1. rownong
    Ответов:
    0
    Просмотров:
    203
  2. Domino-Designer
    Ответов:
    64
    Просмотров:
    3.583
  3. dimat
    Ответов:
    7
    Просмотров:
    1.625
  4. serko
    Ответов:
    3
    Просмотров:
    1.124
  5. serko
    Ответов:
    499
    Просмотров:
    20.619

Поделиться этой страницей