【问题标题】:Using .htaccess to RewriteRule but every file points to one file使用 .htaccess 来 RewriteRule 但每个文件都指向一个文件
【发布时间】:2016-12-08 12:58:56
【问题描述】:

我目前正在尝试使用 .htaccess 来执行以下操作:

当在 url 中找到 b/ 时,它会重定向到 browse.html。我的 .htaccess 文件如下所示:

RewriteEngine On    # Turn on the rewriting engine
RewriteRule    ^b/(.*)$    browse.html    [NC,L]

我使用的是 Apache 2.2.31 版本,我的目录如下所示:

Root
    Root/browse.html
    Root/[css]
              Root/css/browse.css
    Root/[js]
              Root/js/browse.js

当我这样做时,它会将我带到browse.html,但没有正确加载。 cssjs 目录中的每个文件都变成了 browse.html。我需要添加一些额外的东西吗?

以下是带有 .htacess 的开发工具目录的样子

localhost
         b/?page=1 (browse.html file. Name comes from query string)
         b/[css]
                 b/css/browse.css (blank file)
         b/[js]
                 b/js/browse.js (browse.html instead of browse.js)

我尝试将RewriteBase / 放在两者之间,但这对问题没有任何帮助。

【问题讨论】:

  • 您的 .htaccess 文件在哪里?为什么b/里面有css/js文件
  • 我的 .htaccess 文件与其他文件位于根目录中,我不确定,这就是 .htacess 所做的。

标签: html .htaccess


【解决方案1】:

您的重写规则很好。由于您使用 css/js/images 的亲戚路径,问题正在发生。在解析相对路径时,浏览器会将其附加到当前页面的路径中。

您可以在现有规则之上添加此规则:

RewriteEngine On

# fix css/js paths
RewriteRule ^b/.*((?:js|css)/.+)$ /$1 [NC,R=301,L]

RewriteRule ^b/(.*)$ browse.html [NC,L]

【讨论】:

  • 我是将其添加到我的所有页面还是只添加到 browse.html 页面?
  • 所以这行得通,但它带走了 b/path/ 。它从localhost/b/path/?page=1localhost/?page=1。我怎样才能让它留下来?
  • 我将其添加为我的 .htacess 文件,现在它正在加载我的页面三次。有什么想法吗?
  • 只有/js//css/ 文件夹中的文件才会使用第一条规则重定向到正确的路径。规则中没有其他重定向。在禁用缓存的 Chrome 开发工具中进行测试,并在“网络”选项卡中检查您获得的 301/302 重定向 URL 是什么。
  • 我从在 browse.html 中调用的 html 文件中获得 304 状态。其他一切都是 200 状态。
【解决方案2】:

如果文件/文件夹存在,请确保忽略请求:

RewriteEngine On    # Turn on the rewriting engine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^b/(.*)$    browse.html    [NC,L]

【讨论】:

  • 当我这样做时,它给了我同样的结果。在查看开发工具时,它会显示b/ -> [css] [js]。但是css 文件都是空白的,js 文件都是browse.html 应该是的。
  • 那里有b 目录吗?
  • 没有。我需要创建一个b 目录并将所有文件放在那里吗?
  • 不,我只是想确认一下
  • 您使用哪个版本的 apache?您可以将文件夹/文件的确切结构添加到问题中吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 2011-03-25
相关资源
最近更新 更多