【问题标题】:Rewrites breaking links重写中断链接
【发布时间】:2013-11-21 08:49:30
【问题描述】:

我为我的博客创建了一个 URL 重写,但所有链接(如 css、href 和 javascript)都因此而损坏。

如果不通过在每个链接之前添加 / 来手动继续重命名所有链接,是否会以某种方式在 .htaccess 文件中重写它?这是我所拥有的:

RewriteRule ^blog/([-a-zA-Z0-9]+)/?$ blog.php?title=$1 [L,NC]

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    通过在您的 URL 中添加额外的 /,浏览器不知道相对 URL 基础是什么,因此它会在您拥有的 每个 相对 URL 链接前面附加 /blog/在您的页面内容中。浏览器并不知道它实际上是从位于文档根目录中的/blog.php 获取内容,而不是在看起来(至少在浏览器看来)名为“blog”的文件夹中。

    您可以在页面标题中添加一个基本 URI,而不是更改所有链接:

    <base href="/" />
    

    请注意,在某些情况下(我认为使用旧的 IE 浏览器),您需要完整的 URL:

    <base href="http://your-site.com/" />
    

    【讨论】:

    • 哇!你每天都在学习新事物。多年来一直在研究 html,但从未意识到有基础!今天帮我解决了2个问题,谢谢哥们继续。 :)
    【解决方案2】:

    使用mod_rewrite,您可以检查您的 URL 是否指向文件:

    RewriteCond %{REQUEST_FILENAME} -f
    

    或文件夹:

    RewriteCond %{REQUEST_FILENAME} -d
    

    这是您可以使用的.htaccess

    # if this url doesn't point on a file...
    RewriteCond %{REQUEST_FILENAME} !-f
    # ...and doesn't point on a folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    # ...then check this rule
    RewriteRule ^blog/([-a-zA-Z0-9]+)/?$ blog.php?title=$1 [L,NC]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多