Якорь страницы перезаписи мода

Я пытался решить эту проблему в течение последних двух часов. Я уже пробовал каждое решение, упомянутое в Google, но безуспешно.

Начнем с проблемы. Я пытаюсь использовать этот плагин: http://www.gethifi.com/blog/a-jquery-plugin-to-create-an-interactive-filterable-portfolio-like-ours

на моем сайте. Проблема в том, что этот плагин использует теги привязки. Без него вроде не работает. Что ж, я пытаюсь работать с удобными для пользователя URL-адресами на веб-сайте, над которым я сейчас работаю. Так что якоря не работают.

Это мой файл .htaccess прямо сейчас:

RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)\.html$ /mysite/category.php?cat=$1 [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /mysite/category.php?cat=$1&lang=$2 [L]

Ничего особенного, просто некоторые переделки для категорий и языков. Единственное, что, кажется, работает, это:

RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)\.html$ /mysite/category.php?cat=$1 [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /mysite/category.php?cat=$1&lang=$2 [NE,R,L]

Но мой удобный URL-адрес также исчезает, когда я использую это. Вместо этого я вижу: category.php?cat=....

Я не знаю, важно ли это, но я использую <base href="">, чтобы указать на хост, над которым я работаю.

Заранее спасибо за любые идеи.


person moonwalker    schedule 17.12.2010    source источник
comment
Флаг R является проблемой. Без этого не работает?   -  person Pekka    schedule 17.12.2010
comment
Не работает - недостаточно описания.   -  person zerkms    schedule 17.12.2010
comment
@Pekka: Бьюсь об заклад, если бы он получил перенаправление, а не просто не работал - он бы это увидел и указал бы это в вопросе ;-)   -  person zerkms    schedule 17.12.2010
comment
@Pekka: Нет, похоже, это не работает. @Zerkms: Ну, как насчет: вообще ничего не происходит. URL-адрес правильно изменен на якорь, но мне нужно обновить страницу вручную, чтобы увидеть эффект. Если вам нужна дополнительная информация, я буду рад предоставить ее. Спасибо за ваше время.   -  person moonwalker    schedule 17.12.2010
comment
@moonwalker, можете ли вы показать пример URL-адреса с привязкой? Поскольку часть #xyz вообще не должна влиять на перезапись URL, она используется только на стороне браузера. Тогда базовый тег может быть виновником   -  person Pekka    schedule 17.12.2010
comment
@Пекка: Конечно. Вот: localhost/mysite/stars.html#fr localhost/mysite/stars.html#nl localhost/mysite/stars.html#all Когда я нажимаю якорную ссылку, адрес меняется правильно. Но крутые эффекты fadeIn не видны, только если обновить страницу. Я все еще пытаюсь найти решение для этого. Еще раз спасибо за ваше время.   -  person moonwalker    schedule 17.12.2010


Ответы (2)


Якорь # — это фрагмент URL-адреса, который apache будет игнорировать и не будет перезаписывать.

Использование клиентского подхода является единственным обходным путем.

Или вы можете попробовать PHP parse_url - PHP_URL_FRAGMENT

person ajreal    schedule 21.12.2010

Не удалось найти способ заставить плагин работать в сочетании с mod_rewrite, поэтому я просто сдался и использовал другой плагин. Кажется, это работает, так как для работы не нужен якорь.

Мир.

Редактировать:

Это код, который я использую прямо сейчас:

        $(document).ready(function() {

            $('.menu li a').click(function() {


                $('.menu li').removeClass('selected');
                $(this).parent('li').addClass('selected');

                thisItem    = $(this).attr('rel');

                if(thisItem != "all") {

                    $('.item li[rel='+thisItem+']').stop()
                                                            .animate({'width' : '110px', 
                                                                         'opacity' : 1, 
                                                                         'marginRight' : '.5em', 
                                                                         'marginLeft' : '.5em'
                                                                        });

                    $('.item li[rel!='+thisItem+']').stop()
                                                            .animate({'width' : 0, 
                                                                         'opacity' : 0,
                                                                         'marginRight' : 0, 
                                                                         'marginLeft' : 0
                                                                        });
                } else {

                    $('.item li').stop()
                                    .animate({'opacity' : 1, 
                                                 'width' : '110px', 
                                                 'marginRight' : '.5em', 
                                                 'marginLeft' : '.5em'
                                                });
                }
            })

            $('.item li img').animate({'opacity' : 0.5}).hover(function() {
                $(this).animate({'opacity' : 1});
            }, function() {
                $(this).animate({'opacity' : 0.5});
            });

        });

Я просто изменил его со списка на div.

person moonwalker    schedule 17.12.2010
comment
Хотите рассказать миру, какой плагин, который вы использовали, работал на вас? Может быть, другие люди столкнутся с тем же вопросом... - person Select0r; 17.12.2010
comment
@ Select0r: Прошу прощения, не подумал разместить здесь решение. Грец. - person moonwalker; 21.12.2010