【问题标题】:Can I rewrite a URL without redirecting?我可以在不重定向的情况下重写 URL 吗?
【发布时间】:2011-04-09 13:21:15
【问题描述】:

所以我从this handy guide 那里学到了如何使用.htaccess 将漂亮的URI(如foobar.com/baz)重定向到可能位于foobar.com/bazheader345.php?user=baz 的特定内容。

如果我想做相反的事情怎么办?我的锚是静态的,但我在不同的文件中有很多内容——而且它们都没有一个特别漂亮的名字。假设我在foobar.com 有一个名为123.html 的页面,并且希望位置栏保持http://foobar.com尽管用户在文件之间进行导航。

这可以通过更改.htaccess 来完成吗?还是只是 Javascript?

如果它可能的,它会干扰浏览器的历史状态吗?

【问题讨论】:

    标签: javascript url .htaccess


    【解决方案1】:

    使用HTML frames 真的很容易做到这一点。假设您的主页是http://example.com/index.html。将index.html 保存为home.html 并在index.html 中保存类似以下内容:

    <html>
      <head>
        <title>Website title</title>
      </head>
      <body>
        <iframe src="home.html" width="100%" height="100%" frameborder="0" scrolling="no" />
      </body>
    </html>
    

    如果您不想重命名原始主页,则可以在您的.htaccess 文件中添加DirectoryIndex directive。只需将上面的代码保存在frame.html 中,将home.html 更改为您的索引所在的任何文件名,然后添加:

    DirectoryIndex frame.html
    

    到您的.htaccess 文件。

    但是,您应该知道,这种做法在 10 多年前就已经过时了,因为它存在固有的问题。它不会破坏您的历史记录,但会破坏deep linking(也就是说,除了主页之外,不能添加书签或链接到任何内容)。

    更多信息:

    【讨论】:

    • 我同意。虽然保持一致的 URL 或多或少是可能的,但这通常不是一个好主意。
    【解决方案2】:

    您最好为所有其他页面创建漂亮的名称,以便您允许您的用户链接书签这些其他页面...。或者保留丑陋的网址,不要担心。

    保持相同的网址并显示不同的内容违背了网址的全部目的,即成为特定信息集的唯一地址。

    【讨论】:

    • 我接受了 Mark Trapp 的后代回答,因为它提供了实现相关目标的方法,但是,为了记录,你是对的。
    猜你喜欢
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    相关资源
    最近更新 更多