2015-04-11 3 views
0

Я пытаюсь использовать апачский mod_rewrite для достижения следующихКак использовать базовый URL после mod_rewrite

Измените этот URL: http://mywebsite.com/products.php?id=22

к этому URL http://mywebsite.com/products/dog-house

Я все включено и я могу создать URL-адрес и переписать без проблем. Проблема у меня в том, что products.php находится в корневом каталоге веб-сайта, а с новым правилом перезаписи все мои ссылки сломались, и все мои jquery-функции больше не работают , Из-за переписывание, теперь он думает, что этот файл находится в другой подкаталог (продукты), и он бросает все от

Вот копия моего файла .htaccess

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^products/([a-zA-Z]+)$ product.php?id=$1 

</IfModule> 

Я был в состоянии решить проблема сломанной HTML ссылки, добавив в головной метку

<base href="<?=BASE_URL;?>"> 

Теперь проблема я лицо JQuery .. если есть только способ глобально трюк JQuery, чтобы использовать «базу» так же, как HTML получает обман с основной бирка ..

Здесь не приводится пример функции Jquery больше не работает

function search_products_by_keyword() 
    { 
    var keyword = $('#product_keyword').val(); 
    $.post('ajax/search_products_by_keyword.php', {keyword:keyword},function(data){ 
     $('#main_content').html(data); 
    }); 

    } 

Я теперь понимаю, что это моя вина не думать об использовании base_url в первую очередь. Теперь у меня есть такое большое количество этих функций jquery, которые проходят через все из них на 1, это ужасающая мысль.

Заранее спасибо за помощь

ответ

1

Вы можете изменить свои адреса AJAX, чтобы быть абсолютным, добавьте рерайт для URL-адреса AJAX работать в «виртуальной папке» /products или создать /products/ajax/search_products_by_keyword.php, который включает в себя правильный путь.

Я бы предпочел второй, если слишком много, чтобы исправить первое.

RewriteRule ^products/([a-zA-Z]+)$ product.php?id=$1 [L] 
RewriteRule ^products/(.*)$ $1 [L] 
+0

или он может добавить другое правило перезаписи для переписывания вызовов AJAX! – undone

+0

@undone Вот что я имел в виду, я отредактировал, чтобы включить переписывание, которое я предлагаю. –

Смежные вопросы