Различение внутренних и внешних запросов htaccess - PullRequest
1 голос
/ 18 октября 2011

У меня проблема с файлом .htaccess.Я пробовал поискать в Google, но не смог найти ничего полезного.

У меня есть запрос AJAX для загрузки страниц в index.php.Ссылка, вызывающая его, добавляется с помощью "#" через jquery.Поэтому, если вы нажмете на ссылку domain.com / foo / bar (постоянная ссылка на wordpress), вы получите domain.com / # / foo / bar в браузере, и содержимое получитзагружается через AJAX.

Моя проблема заключается в том, что поскольку это посты в блоге, внешние ссылки захватывают реальную ссылку (domain.com/foo/bar), поэтому я хочу, чтобы они были перенаправлены на domain.com/#/foo / bar (потому что тогда ajax проверяет хеш и делает его магию).

Пример здесь .

Код jquery для препенда:

    $allLinks.each(function() {
        $(this).attr('href', '#' + this.pathname);
...

и затем скрипт проверяет

if (hash) { //we know what we want, the url is not the home page!
        hash = hash.substring(1);
        URL = 'http://' + top.location.host + hash;
        var $link = $('a[href="' + URL + '"]'), // find the link of the url
... 

Теперь я пытаюсь заставить перенаправить работать с htaccess.Мне нужно проверить, является ли запрос внешним или внутренним

RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1  #???

и если URI начинается с "/ # /", что является проблемой, так как это комментарий, \% 23 на самом деле не работает как-то.

RewriteCond %{REQUEST_URI} !^/\%23/(.*)$ #???

Как заставить это работать, просто перенаправив внешний запрос с domain.com/foo/bar на domain.com/#/foo/bar, не затрагивая внутреннийAJAX материал?

Ответы [ 2 ]

0 голосов
/ 18 октября 2011

Хорошо, я сделал это с помощью PHP, вот код

    $path = $_SERVER["REQUEST_URI"];
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
       echo "It's ajax";
    } else {
     if(strpos($path, '/#/') === false) {
       header("Location: http://schnellebuntebilder.de/#".$path); //ONLY WORKS IF THERE IS NO BODY TAG
     }
    }

Конечно, есть лучшее решение, но пока оно работает, так как страница / foo / bar, в моем случае, не включает header.php, здесь нет> body <-tag и php "header () "функция работает. Если кто-то знает скрипт htaccess для этого, я бы хотел узнать и изучить. </p>

0 голосов
/ 18 октября 2011

Я полагаю, что ваша переменная $allinks назначена следующим образом:

$allinks = $('a');

Сделайте это вместо:

$allinks = $('a[href^="' + document.location.protocol + '//' + document.location.hostname + '"]');

Это преобразует внутренние ссылки на ваш hash -y стиль только.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...