我正在使用 MOD_REWRITE 通过单个文件引导所有 URL。目的是允许漂亮的网址,例如:
http://mysite.com/shop/electrical/hoover
或者
http://mysite.com/shop/checkout
等等等等
我使用以下 .htaccess 文件实现了这一点:
# Turn on the RewriteEngine
RewriteEngine On
#
# Rules
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . urlbug.htm
这是完成所有工作的精简 HTML 文件:
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<title>My web page</title>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.20.custom.css" media="all" rel="stylesheet"/>
</head>
<body>
<div id="accordion"><h3><a href="#">Home</a></h3><div>
<ul class="submenu"><li><a href="#" title="Clear Counters">Clear Counters</a></li></ul>
</div>
<h3><a href="#">Maintan Tables</a></h3>
<div>
<ul class="submenu">
<li><a href="#" title="Stock">Stock</a></li>
<li><a href="#" title="Categories">Categories</a></li>
<li><a href="#" title="Designers">Designers</a></li>
</ul>
</div>
<h3><a href="#">User Database</a></h3><div><ul class="submenu"></ul></div>
</div>
<script src="js/libs/jquery-1.7.1.min.js"></script>
<script src="js/libs/jquery-ui-1.8.20.custom.min.js"></script>
<script src="js/plugins.js"></script>
</body></html>
如果您访问以下 URL,则此方法有效:
http://www.facebookanswers.co.uk/code/foobar/works
但是,如果您尝试使用如下 URL:
http://www.facebookanswers.co.uk/code/foobar/no/longer/works
然后会加载 URL,但是不会加载任何 CSS 或 JS 文件。
这是因为我使用的是相对 URL。
如果我改为使用绝对 URL,那么一切正常。我设置了一个不同的文件夹来演示这一点:
http://www.facebookanswers.co.uk/code/foobar2/works
和
http://www.facebookanswers.co.uk/code/foobar2/works/as/well
这是带有绝对 URL 的代码:
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<title>My web page</title>
<link type="text/css" href="http://www.facebookanswers.co.uk/code/foobar2/css/ui-lightness/jquery-ui-1.8.20.custom.css" media="all" rel="stylesheet"/>
</head>
<body>
<div id="accordion"><h3><a href="#">Home</a></h3><div>
<ul class="submenu"><li><a href="#" title="Clear Counters">Clear Counters</a></li></ul>
</div>
<h3><a href="#">Maintan Tables</a></h3>
<div>
<ul class="submenu">
<li><a href="#" title="Stock">Stock</a></li>
<li><a href="#" title="Categories">Categories</a></li>
<li><a href="#" title="Designers">Designers</a></li>
</ul>
</div>
<h3><a href="#">User Database</a></h3><div><ul class="submenu"></ul></div>
</div>
<script src="http://www.facebookanswers.co.uk/code/foobar2/js/libs/jquery-1.7.1.min.js"></script>
<script src="http://www.facebookanswers.co.uk/code/foobar2/js/libs/jquery-ui-1.8.20.custom.min.js"></script>
<script src="http://www.facebookanswers.co.uk/code/foobar2/js/plugins.js"></script>
</body>
</html>
沿着这条线的某个地方,路径变得混乱。解决这个问题的最佳方法是什么?如果可能,我想保留相对 URL,因为我正在开发的代码将在许多站点上使用。如果我必须使用绝对 URL,这并不是世界末日,而且我知道绝对 URL 有性能优势,但是浏览器会愉快地加载 URL,但随后认为它存储在其他地方,这似乎很奇怪!