javascript - 在 .htaccess 中使用重写规则时,CSS/Javascript 在文件夹/目录中不起作用

标签 javascript css .htaccess mod-rewrite directory

我正在使用 .htaccess 文件使我的 URL 对 SEO 友好,但是当我在 URL 中添加一个文件夹时,CSS 和 Javascript 停止加载。

如果我使用这个 url,它就可以工作(其中 id="123"和 str="some-package-name"): http://www.mysite.com/package123_some-package-name

RewriteRule package(.*)_(.*)$ packages.php?id=$1&str=$2

但是如果我使用这个 URL,它不会(其中 id="123"和 str="some-package-name"): http://www.mysite.com/package123/some-package-name

RewriteRule package(.*)/(.*)$ packages.php?id=$1&str=$2

如果可能,我更愿意使用基于目录的 URL。

还有,有什么办法可以通过 .htaccess 通过 POST 方法向任何其他文件提交表单吗?

任何人都可以帮忙...提前致谢!

最佳答案

您更喜欢使用基于目录的 url。没关系。

问题是您很可能为 css 使用相对 url-s。尝试使用域相对或绝对 url-s 到 css。

css 的引用可能在您的标题中是相对的,因此第一次指向“style/asdf.css”会导致“http://www.mysite.com/style/asdf.css”,并且“http://www.mysite.com/package123/style/asdf.css”第二次,因为浏览器搜索与当前文档位置相关的 css。浏览器认为它在文件夹中。

为 css 使用绝对或域相对 url。

绝对,以像 http://这样的协议(protocol)开头(好):

<­link rel="stylesheet" type="text/css" href="http://www.mysite.com/style/asdf.css">

相对于域,以/开头(好):

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

相对的,从别的东西开始(在大多数情况下是不好的):

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

对于 javascripts 也是如此。

编辑:自从我检查了您的网站后,我发现那里的每个网址都存在这个问题。尝试点击“单用户包”几次,看看它对 url 做了什么。这就是相对 URL 的问题。当您使用相对 URL 时,不同文件夹中使用的相同 URL 指向不同的位置。

如果您计划在 mod 重写中使用虚拟文件夹,则不得使用相对 url。

这意味着像这样的行会导致错误:

<li><a href="package3/night-delight">Night delight</a></li>

<li><a href="book-your-demo">Book your demo</a></li>

<script type="text/javascript" src="js/validations-compressed.js"></script>

<li class="slct"><a href="index">Home</a></li>

还有

<a href="index.php" id="logo" title="CGBroadband.com">
<link rel="icon" type="image/png" href="images/template/fav.png" />

这些将指向每个页面的其他地方。所以这不仅仅是一个 css 问题,它是页面上每个链接的问题。

在您的情况下,最简单的解决方案是在所有网址之前放置一个/

编辑:另请查看:我找到了一个可能更简单的其他可行解决方案:https://developer.mozilla.org/en/HTML/Element/base

这意味着如果你把

<base href="http://www.mysite.com/" />

在你的 中,那么所有的相关 url 都将与它相关!整洁不是吗?但我听说有人提示这个浏览器的 IE 兼容性,所以在所有浏览器上检查一下。

关于javascript - 在 .htaccess 中使用重写规则时,CSS/Javascript 在文件夹/目录中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014931/

相关文章:

Javascript - JSON.parse : unexpected end of data - Error when using valid JSON. 我做错了什么?

css - 如何自动将位于另一个 div 元素内的 div 元素居中

html - 带有段落编号和旁注的 CSS 样式段落

.htaccess - 我想使用 .htaccess 从 https 上的 url 中删除 www

php - 重写规则中的条件第二个查询

javascript - 链接和 onClick?

Javascript 将事件传递给函数

CSS Center Div - 问题

.htaccess - 默认语言根级别

javascript - WebStorm 中 TypeScript 的外部库与 "<reference path="