X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> чпу
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 18.8.2010, 3:28; Ответить: Letmetouchyou
Сообщение #1


.htaccess
RewriteEngine on

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

RewriteRule ^(.*)$ index.php?m=$1 [L,QSA]

то есть любой запрос к сайту преорбразуеться так, что все, что после названия сайта в адресной строке летит в шет запрос в переменную m;
то есть
_http://mysite.com/module
==
_http://mysyte.com/index.php?m=module

в index.php использую обработчик, для вывод нужной страницы.

Например
[PHP]$module = $_GET['m'];

$module = explode('/', $module);[/PHP]
и дальше через обрабатываю через switch;

вопрос в служующем:
Если напрмиер у меня запрос (страница по адресу)):
_http://mysite.com/first/second
в запрос я получаю
?m=first/second
далее explode('/'...)
получаю
1)first
2)second
далее switch;


Но бразуер, на сколько я понял воспринимает такой запрос как будто ето директории.
то есть косвенная адресация тут не сработает, но ето проблема решаеться путем присвонеия абсолютных ссылок (_http://mysite.com/soucr/image.gif)

Но а как быть с аякс запросами?
например, когда
$.post(
'./system/system.php'

...);

тут в случае, когда адресс
_http://mysite.com/first - сработает
а когда _http://mysite.com/first/second -нет. а сработает только когда адресаия кк файлу будет '../system/system.php'



как решить проблему? или тут совершенно не верный подход?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 18.8.2010, 17:34; Ответить: LifeUP
Сообщение #2


можно создать файл .js где будут лежать все запросы и с самого верха указать путь до ajax папки, или как у вас в каждом файле писать свой путь.
var url = '';
var loading = '<center><img src="'+url+'/ajax/loader.gif" /></center>'; // индикатор загрузки
function searchme(v){    
    var chars = $('#user_name_magaz').attr('value');
        $('#magaz1').html(loading);
        $('#magaz1').load(url+'/ajax/magaz.php',{task:'MAGAZ',id: v, nick: chars });
}
function searchme2(v){        
        $('#magazin2').load(url+'/ajax/magaz.php',{task:'WM', id_wn:  v });
}

Вот както так

P.S почему вы выбрали такой метод ЧПУ а не
RewriteEngine On

ErrorDocument 404 /error404.php
ErrorDocument 403 /error403.php


RewriteRule ^cat/([0-9]+).html$ index.php?t=cat&id=$1 [L]


такой
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Flok
Flok
сообщение 18.8.2010, 17:53; Ответить: Flok
Сообщение #3


(Letmetouchyou @ 18.8.2010, 06:28) *
?m=first/second далее explode('/'...) получаю 1)first 2)second


что-то мне после этого показалось, что тут надо думать над переосмысливанием алгоритма.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 18.8.2010, 18:08; Ответить: Letmetouchyou
Сообщение #4


Flok, да не.
(LifeUP @ 18.8.2010, 20:34) *
ErrorDocument 404 /error404.php
ErrorDocument 403 /error403.php

страницы ошибо зависят от текущего шаблона.


(LifeUP @ 18.8.2010, 20:34) *
RewriteRule ^cat/([0-9]+).html$ index.php?t=cat&id=$1 [L]

а сымсл такой ? так не универсально

(Flok @ 18.8.2010, 20:53) *
что-то мне после этого показалось, что тут надо думать над переосмысливанием алгоритма.










__________________



ну вот же я и спрашиваю, ка ктакоу лутше делать.

Сейчас я прото распарсиваю адресную строку.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 18.8.2010, 18:17; Ответить: LifeUP
Сообщение #5


(Letmetouchyou @ 18.8.2010, 21:08) *
Flok, да не.

страницы ошибо зависят от текущего шаблона.



а сымсл такой ? так не универсально




ну вот же я и спрашиваю, ка ктакоу лутше делать.

Сейчас я прото распарсиваю адресную строку.


это лиш пример, разумеется ошибки будут свои, хотите универсально, можно и так сделать:
1. http://mysite.ru/home.html
2. http://mysite.ru/home/2.html

RewriteRule ^([a-z]+).html$ index.php?index.php?m=$1 [L]
RewriteRule ^([a-z]+)/([0-9]+).html$ index.php?index.php?m=$1&page=$2 [L]

в modrewrite я не шарю но мне кажется так будет куда лучше писать чем как у вас. Тут всё просто а у вас ещё надо URL разбивать на куски.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 18.8.2010, 18:33; Ответить: Letmetouchyou
Сообщение #6


LifeUP, без разницы.
а если например
http://mysite.ru/home
http://mysite.ru/home/
должны быить одна и таже страница?



Сообщение от Letmetouchyou
ето понятно, но тут прийдеться еше делать обраотчик урл строки. А если имееться куча гет запросов?


Как показала моя практика, rewriterule намного больше увеличивают время выполнения скрипта, нежели свой обработчик.

http://www.html.by/showthread.php?t=11904


а на самом деле вопрос то не в этом)

как в js в таком случае обрашаться к серверным обработчикам?

то есть точка входа всегда index.php и по идеи путь к скриптам не меняеться, но в случаях
http://mysite.com/home
http://mysite.com/home/work
http://mysite.com/home/job/html

браузер воспринимает это как директории, и не можт обратиться к скрипту.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 18.8.2010, 18:37; Ответить: LifeUP
Сообщение #7


Насчёт времени и своего обработчика ничего сказать не могу =)
создаете файл ajax.js - тут все ваши запросы
грузите его в index.php и из любого файла обращаетесь к ajax через функции которые написаны в файле выше. Самый простой способ
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 18.8.2010, 18:46; Ответить: Letmetouchyou
Сообщение #8


LifeUP,
(LifeUP @ 18.8.2010, 21:37) *
создаете файл ajax.js - тут все ваши запросы
грузите его в index.php и из любого файла обращаетесь к ajax через функции которые написаны в файле выше. Самый простой способ

ну а причем тут ето ?
к js функциям имеетсья доступ и так.
если js файлы подключать использую абсолютный путь
<script src='http://.....'></script>

а вопрос именно как обратитсяь с яваскрипт функции к серверному обрботчку?

напрмиер

$.ajax({
  url: './ajax/test.php',
  success: function(data) {
  ....
  }
});

так, если адресс http://mysite.com/home работать будет
а если http://mysite.com/home/second - небудет

а заработает только если

$.ajax({
  url: '[COLOR="Red"]..[/COLOR]/ajax/test.php',
  success: function(data) {
  ....
  }
});
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 18.8.2010, 18:56; Ответить: LifeUP
Сообщение #9


или я вас не понял или вы меня =)
вот кину небольшой пример:
все ajax файлы допустим лежат в папке ajax...
Есть файл sample.js в котором находятся все запросы, и есть страница index.php, что получаем:
sample.js
var url = 'ajax/';
var loading = '<center><img src="'+url+'/ajax/loader.gif" /></center>'; // индикатор загрузки

function first () {
$.post (url + "first.php", {task:"ddd"}, function (){ alert ('aaa'); });
}
index.php
<script language="JavaScript" type="text/javascript" src="sample.js"></script>

<input type='text' name='name' onchange="first ()" />
Ну вот как-то так, в таком случае откуда не вызови функцию везде она сработает, по крайней мере у меня =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 18.8.2010, 19:26; Ответить: Letmetouchyou
Сообщение #10


LifeUP, и что?
пример же не рабочий.
htaccess:
RewriteEngine on

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

RewriteRule ^(.*)$ index.php [L,QSA]


html
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js' type='text/javascript'></script>
<script type="text/javascript" src="./ajax.js"></script>

<button>click me</button>

js
var url = 'ajax/';

$(document).ready(function(){

    $('button').click(function(){
    
        $.post (
            url + "first.php",
            {task:"ddd"},
            function (request){
                alert (request.data);
                },
            "json"
            );
    
    });
    
    
    });

ajax-php
[PHP]<?php
header('Content-Type: text/javascript; charset=utf-8');

?>
{"data":"hi"}[/PHP]

и теперь
http://mysite.com/
http://mysite.com/home
http://mysite.com/home/first

с разнымиадресами попробуйте выполненеи скрипта
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 26.4.2024, 0:32
Дизайн