【问题标题】:Prevent CSS URL from htaccess rewrite防止 CSS URL 被 htaccess 重写
【发布时间】:2013-11-23 15:43:01
【问题描述】:

我正在使用 .htaccess 创建一个标准重写来执行此操作

http://www.myurl.com/post/{id}/

RewriteRule    ^post/([0-9]+)/?$    post.php?id=$1    [NC,L]

现在,它可以正常工作,但所有其他外部 URL(例如 CSS 和 JavaScript)都不能正常工作。 有没有办法防止它而不必更改所有的网址?我在谷歌上搜索没有成功,有什么想法吗?

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    你需要一个额外的规则来修复 css、js、图片链接:

    # your rewrite rule
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^post/([0-9]+)/?$ post.php?id=$1 [QSA,NC,L]
    
    # fix css, js, image links
    RewriteRule ^post/(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [NC,L]
    

    另外,请确保在您的 css、js、图像文件中只使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以 http:// 或斜杠 / 开头

    【讨论】:

    • 或者确保所有路径都相对于站点根目录(即在 HTML 代码中包含 /css/stylesheet.css 而不是 css/stylesheet.css)。
    【解决方案2】:

    只需从您的状况中排除物理文件

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule    ^post/([0-9]+)/?$    post.php?id=$1    [NC,L]
    

    【讨论】:

    • 好答案,我肯定会改变这一点,但 anubhava 的答案解决了真正的问题。
    • 如果正在使用相对的 css 路径并且路径正在成为 ex,那实际上将无济于事。 /post/css/style.css
    • 没错,这只是让文件可访问的第一步。
    • 我尝试过这种方式,但它返回 404 错误 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^post/([0-9]+)/?$ index.php?p=$1 [NC,L] 有什么想法吗?
    • 您必须通过文件的真实路径访问您的文件,而不是使用post/。如果你想要一些东西,请参考 anubhava 的回答;)这里有更多解释:stackoverflow.com/a/15879058/1529139
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多