【问题标题】:After htaccess changes the css stop working as stylesheethtaccess 更改后,css 停止作为样式表工作
【发布时间】:2016-10-26 22:30:43
【问题描述】:

我的 css 文件有一个奇怪的问题。 在我将 htaccess 文件更改为此之后

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{THE_REQUEST} /eventDetails\.php\?id=([0-9]+)&name=(.+)\sHTTP [NC]
RewriteRule ^ /%1/%2? [L,R]
RewriteRule ^([^/]+)/([^/]+)/?$ /eventDetails.php?id=$1&name=$2 [L]
</IfModule>

我的 css 文件停止加载到网站的所有页面。

我的 public_html 文件夹包含

  • index.php
  • profile.php
  • css -> style.css
  • js -> owl.carousel.js
  • .htaccess

使用 Google Chrome 开发者工具,我的 css 文件出现此错误

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://something.gr/css/style.css".

以及 javascript 文件的此错误

owl.carousel.js:1 Uncaught SyntaxError: Unexpected token <

来自Network 标签的一些图片。

没有 .htaccess 文件

如您所见,Content-Type 是 text/css .. 应该是这样的

带有 .htaccess 文件

正如您在此处看到的,mime.type 将其作为文本/html 返回

我试过了。

首先。在&lt;title&gt; html 标签之后我进入了网络

<base href="/">

第二。我试图将 .htaccess 文件更改为此

    <IfModule mod_rewrite.c>
    RewriteEngine on
AddType application/javascript js
AddType text/css css
    RewriteCond %{THE_REQUEST} /eventDetails\.php\?id=([0-9]+)&name=(.+)\sHTTP [NC]
    RewriteRule ^ /%1/%2? [L,R]
    RewriteRule ^([^/]+)/([^/]+)/?$ /eventDetails.php?id=$1&name=$2 [L]
    </IfModule>

最后我检查了我的专用服务器usr/local/apache/conf/

在 mime.types 文件中,text/css css 的注释与 application/javascript js

我不知道我还能做什么。

【问题讨论】:

    标签: apache .htaccess mime-types


    【解决方案1】:

    你的第二条规则

    RewriteRule ^([^/]+)/([^/]+)/?$ /eventDetails.php?id=$1&name=$2 [L]
    

    /css/style.css 重写为/eventDetails.php?id=css&amp;name=style.css

    如果你想从这条规则中排除现有文件,你可以在它前面加上

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    

    也可以将第一条规则更改为

    RewriteCond %{QUERY_STRING} id=([0-9]+)&name=(.+)
    RewriteRule ^eventDetails\.php$ /%1/%2? [L,R]
    

    为了防止我们在开头插入重定向循环

    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule ^ - [L]
    

    你当然不需要这个,如果你保持现有的条件和规则反对THE_REQUEST


    所以完整的规则变成了

    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule ^ - [L]
    
    RewriteCond %{QUERY_STRING} id=([0-9]+)&name=(.+)
    RewriteRule ^eventDetails\.php$ /%1/%2? [L,R]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/([^/]+)/?$ /eventDetails.php?id=$1&name=$2 [L]
    

    【讨论】:

    • 就这样搞定? &lt;IfModule mod_rewrite.c&gt; RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{THE_REQUEST} /eventDetails\.php\?id=([0-9]+)&amp;name=(.+)\sHTTP [NC] RewriteRule ^ /%1/%2? [L,R] RewriteRule ^([^/]+)/([^/]+)/?$ /eventDetails.php?id=$1&amp;name=$2 [L] &lt;/IfModule&gt;??
    • 也可以参考RewriteCond的文档,搜索“属性测试”。
    • RewriteCond %{QUERY_STRING} id=([0-9]+)&amp;name=(.+) 可能会导致无限循环错误,您需要在这里匹配%{THE_REQUEST} 变量。
    • @starkeen 感谢您的发现。
    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 2021-03-13
    • 2011-03-12
    • 2015-10-26
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多