0

为了开发,我将站点设置在一个名为“staging”的子目录中。例如,所有 JS 和 CSS 引用都指向 /css/styles.css(注意 css 之前的 /)。

发生的问题是当我在 /staging/contact/ 等目录中时,联系人页面试图加载“/staging/contact/css/styles.css”,而不是应该加载到“/staging/css/styles.css”中。 css”。

我试图通过 htaccess 重写基础,但是它不起作用。我在用着:

RewriteEngine On
RewriteBase /staging/

当我在联系页面上查看源代码时(因为它没有加载任何 CSS/JS),它仍然引用 /staging/contact/css/styles.css。我在这里做错了什么?:/

4

2 回答 2

2

将此代码放在您的DOCUMENT_ROOT/.htaccess(/staging/ 上方的级别)中:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/staging/ [NC]
RewriteRule \.(?:jpe?g|gif|bmp|ico|png|tiff|css|js)$ /staging%{REQUEST_URI} [L,R=301,NC]

然后无需更改您的 css/JS URL,也无需<BASE>在 HTML 中使用标签。

于 2013-10-11T07:16:14.457 回答
1

您的脚本和样式可能是使用相对 URI 链接的。例如:

<link rel="stylesheet" href="css/style.css" type="text/css" />

您需要在页面标题中添加基础:

<base href="/staging/" />

或者,如果这些都不是一个选项,您可以尝试在 htaccess 文件的顶部添加额外的重写规则:

RewriteBase /staging/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/(css|js)/([^/]+)\.(js|css)$ $2/$3.$4 [R=301,L]

暂存的 htaccess 文件。

于 2013-10-11T05:28:57.760 回答