【发布时间】:2013-06-08 10:21:46
【问题描述】:
我在站点的子目录中有以下 .htaccess 文件:
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?params=$1 [L,QSA]
我有以下 index.php 文件:
<html>
<head>
<link href="css/main.css" rel="stylesheet"/>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="js/main.js"></script>
</head>
<body>
<p>if css loads, this should be green</p>
<p id="message">javascript is NOT loaded</p>
<div>If images are displaying correctly, then there should be a green square below:</div>
<img src="images/test.jpg"/>
<div style="margin: 10px 0 0 0;font-weight: bold;background-color:#eee"><?php echo '$_SERVER["REQUEST_URI"] = '. $_SERVER["REQUEST_URI"]; ?></div>
</body>
</html>
所有 URL 都正确重定向到 index.php。但是,如果 URL 比子目录路径深一层以上,那么我的 css/js/images 路径就会损坏:
我必须对 .htaccess 文件进行哪些更改,以使路由在任何级别都能正常工作并且不会破坏我的 css/js/image 路径?
【问题讨论】:
-
您始终可以提供文件的绝对 URL。如果您在 PHP 中为站点 url 设置一个变量并在每个包含的前面回显该变量,则更容易维护。
-
我已经考虑过了,但如果可能的话,我想保持这些链接的相对性,只是为了降低将站点从服务器移动到服务器、从本地移动到在线等的开销。
-
试过'base'标签?
-
我在 htaccess 方面不是最擅长的,但我使用过很多 CMS,他们都使用绝对 URL 来完成。我会喜欢这个问题,也许有人能想到一个聪明的解决方案。