【问题标题】:Css, image and js not working in .htaccess fileCss、图像和 js 在 .htaccess 文件中不起作用
【发布时间】:2016-03-28 12:55:39
【问题描述】:

我的代码在下面,我的代码无法获取位于不同文件夹中的所有 css、js 和图像

RewriteEngine On

RewriteBase /
RewriteCond ${REQUEST_URI} ^.+$
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [NC] [OR]
RewriteCond %{THE_REQUEST} \s/+product\.php\.css\?id=([^\s&]+) [NC]
RewriteRule ^ product/%1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^ - [L]

RewriteRule ^product/([^/.]+)/?$ product.php?id=$1 [L,QSA]

RewriteRule ^([A-Za-z\s0-9-]+)/?$ /product.php?id=$1 [L,QSA]

【问题讨论】:

  • 浏览器在寻找什么?您可以检查控制台以查看它尝试获取的文件。也许这只是一个相对路径问题。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

RewriteRule ^ product/%1? [R=301,L]

这几乎肯定是由于在 HTML 中使用 CSS、JS 和图像的相对路径造成的。您将请求重定向到“虚拟”子目录,因此您的 HTML 中的任何相对路径都将与此子目录相关,而不是文档根目录,这可能是必需的。

您需要在head 部分中设置base 标记来声明所有相对URL 都相对 到的URL。或者将您的 URL 更改为相对于根的(以斜杠开头)或绝对的。例如:

<base href="http://example.com/product.php">

另请参阅我对 Pro Webmasters stack 上类似问题的回答: https://webmasters.stackexchange.com/a/86458/1243

【讨论】:

    【解决方案2】:

    您的问题是,您的相对 URI 的基数已更改。原来,当页面为/product.php时,base为/,浏览器正确填写了/base的相关链接。但是当浏览器转到像/product/ 这样的页面时,基础突然变为/product/,它会尝试将其附加到所有相对 URL 的前面,因此它们都不会加载。

    您可以将链接设为绝对链接,也可以更改页面标题中的 URI 基础(在 &lt;head&gt; &lt;/head&gt; 标记之间):

    <base href="/">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2013-08-21
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多