За последние 24 часа нас посетили 19012 программистов и 1613 роботов. Сейчас ищет 701 программист ...

mod_rewrite перенаправление

Тема в разделе "Регулярные выражения", создана пользователем ChesterS, 19 июл 2010.

  1. ChesterS

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

    С нами с:
    19 июл 2010
    Сообщения:
    7
    Симпатии:
    0
    Подскажите, пожалуйста, новичку:
    как в .htaccess сделать перенаправление вида site.com/ajax -> site.com/ajax.php ?
    вот набросал:

    RewriteCond %{REQUEST_URI} ^(.+)/ajax/(.+)$
    RewriteRule ^(.+)$ ajax\.php?$1 [L]

    но не работает, переходит на индекс, есть еще такое правило:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ index.php [L]

    Зараннее спасибо за помощь!
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    так надо чтобы передавало c http://example.com/что-то/ajax/что-то2 или
    ?
     
  3. ChesterS

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

    С нами с:
    19 июл 2010
    Сообщения:
    7
    Симпатии:
    0
    желательно просто как я написал, просто никак не удается сделать запрос с помощью jQuery, а данные буду передавать POSTом, так что ГЕТ не нужен
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Код (Text):
    1. RewriteRule ^ajax$ ajax\.php
    А теперь давайте разбиратьсяпочему и что не получается, чтобы не пришлось такие костыли пихать
     
  5. ChesterS

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

    С нами с:
    19 июл 2010
    Сообщения:
    7
    Симпатии:
    0
    Спасибо большое, теперь с браузера перенаправляет, а если аяксом обращаюсь - отдает ошибку 500 :/
    p.s. Плохо пока регулярки знаю, уже разобрался. А вот почему по запросу 500 отдает -- в догадках теряюсь.
    Спасибо.
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    браузер ответ закэшировал?
     
  7. ChesterS

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

    С нами с:
    19 июл 2010
    Сообщения:
    7
    Симпатии:
    0
    Ответ на непонятный вопрос: если с браузера -- нормальный, перенаправляет на ajax.php, но я делаю пост-запрос с помощью аякса(jquery) и смотрю результат в плагине для firefox (firebug) -- в плагине я вижу результат запроса:
    500 Internal Server Error
    даже не знаю в чем может быть проблема :О
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А в логи заглянуть? =)
     
  9. ChesterS

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

    С нами с:
    19 июл 2010
    Сообщения:
    7
    Симпатии:
    0
    access.log :

    127.0.0.1 - - [20/Jul/2010:00:51:42 +0300] "GET /signin HTTP/1.1" 200 846
    127.0.0.1 - - [20/Jul/2010:00:51:42 +0300] "GET /jquery.js HTTP/1.1" 304 -
    127.0.0.1 - - [20/Jul/2010:00:51:42 +0300] "GET /j.js HTTP/1.1" 304 -
    127.0.0.1 - - [20/Jul/2010:00:51:42 +0300] "GET /Style/style.css HTTP/1.1" 200 362
    127.0.0.1 - - [20/Jul/2010:00:51:43 +0300] "POST /ajax HTTP/1.1" 500 -

    а в error.log только старые эрроры:

    [Tue Jul 20 00:11:37 2010] [alert] [client 127.0.0.1] Z:/home/latest/www/.htaccess: RewriteCond: bad flag delimiters
    [Tue Jul 20 00:11:40 2010] [alert] [client 127.0.0.1] Z:/home/latest/www/.htaccess: RewriteCond: bad flag delimiters
    [Tue Jul 20 00:11:45 2010] [alert] [client 127.0.0.1] Z:/home/latest/www/.htaccess: RewriteCond: bad flag delimiters

    если это нужно было
     
  10. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    весь .htaccess покажи?
     
  11. ChesterS

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

    С нами с:
    19 июл 2010
    Сообщения:
    7
    Симпатии:
    0
    #php
    php_value error_reporting 0
    php_value memory_limit "32M"
    php_value display_errors 1
    php_value max_execution_time 120

    # options
    Options -MultiViews +FollowSymlinks -Indexes
    AddDefaultCharset utf-8
    RewriteEngine On
    RewriteBase /

    # ajax
    RewriteRule ^ajax$ ajax\.php

    # dynamic rewrite
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ index.php [L]
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    у меня отработало. Поставь [L] в конце строки с аяксом
     
  13. ChesterS

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

    С нами с:
    19 июл 2010
    Сообщения:
    7
    Симпатии:
    0
    поставил, эффекта ноль :( буду думать об переустановке веб-сервера