【问题标题】:Mod rewrite page anchorMod重写页面锚
【发布时间】:2012-06-11 03:28:12
【问题描述】:

过去两个小时我一直在尝试解决这个问题。我已经尝试了谷歌上提到的所有解决方案,但没有任何运气。

让我们从问题开始。我正在尝试使用这个插件: http://www.gethifi.com/blog/a-jquery-plugin-to-create-an-interactive-filterable-portfolio-like-ours

在我的网站上。问题是这个插件正在使用 Anchor 标签。没有它,它似乎不起作用。 好吧,我正在尝试在我正在处理的网站上使用用户友好的 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=""> 指向我正在处理的主机。

提前感谢您的任何想法。

【问题讨论】:

  • R 标志是问题所在。没有那个就不行吗?
  • “不工作”——描述不够。
  • @Pekka:我敢打赌,如果他得到重定向而不是仅仅“不工作” - 他会看到它并在问题中指定它;-)
  • @Pekka:不,它似乎不起作用。 @Zerkms:那么怎么样:什么都没有发生。网址已正确更改为锚点,但我需要手动刷新页面才能看到效果。如果您需要更多信息,我很乐意提供。感谢您的宝贵时间。
  • @moonwalker 你能展示一个带有锚点的 URL 示例吗?因为#xyz 部分根本不应该影响URL 重写,所以它只用于浏览器端。基础标签可能是这里的罪魁祸首

标签: php mod-rewrite anchor


【解决方案1】:

Anchor # 是一个 URL 片段,apache 将忽略并且不迎合重写。

使用客户端方法是唯一的解决方法。

或者你可以试试PHP parse_url - PHP_URL_FRAGMENT

【讨论】:

    【解决方案2】:

    找不到让插件与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。

    【讨论】:

    • 想告诉全世界您使用的哪个插件适合您?也许其他人会遇到同样的问题......
    • @Select0r:抱歉,没有考虑将解决方案放在这里。问候。
    猜你喜欢
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多