【问题标题】:.htaccess rewrite rule breaks css and javascript when non existant sub directory or trailing slash is in url当不存在的子目录或尾部斜杠在 url 中时,.htaccess 重写规则会破坏 css 和 javascript
【发布时间】:2020-06-27 03:00:50
【问题描述】:

我注意到在 index.php 中添加尾随 / 会破坏 css 和 javascript,这在此处进行了解释-what-happens-when-i-put-a-slash-after-a-php-url

我的重写规则采用域和正斜杠之后的任何字符串并将其放入 GET 变量 q 中。所以 foo.com/foo 工作正常,我可以在 GET 变量 q 中访问 /foo。如何让 url 字符串中请求的任何不存在的资源以类似方式工作?使 foo.com/foo/ 或 foo.com/foo/foo 等重定向到 index.php 而不会破坏 css 和 javascript。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./index.php?q=$1 [NC,L,QSA]
</IfModule>

我的重写规则在查询字符串附加到 index.php 或 /index.php 被 /foo 替换但在添加其他目录(如 /foo/ 或 /foo/foo)时破坏 js 和 css 时有效.需要如何编写规则来防止这种情况发生?

【问题讨论】:

  • 放一个你的css或js文件的url示例

标签: php apache .htaccess


【解决方案1】:

您似乎使用相对链接来包含您的 javascript 或 css 文件。 所以,你所要做的就是让你的文件地址是绝对的,比如/js/search.js。 您的重写规则是正确的,它不会将实际文件转发到您的 index.php 文件。但是当你说src='js/search.js'时,它意味着浏览器的index.php/js/search.js,这不是一个实际的文件地址。

【讨论】:

  • 我没有将相对路径更改为绝对路径,而是通过将其添加到头部 localhost/Foo" /> 在类似问题中找到了答案现在一切都按预期工作。谢谢!
猜你喜欢
  • 2019-01-25
  • 2015-10-19
  • 2012-02-27
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多