4

我的 .htaccess 文件如下所示:

RewriteEngine On
RewriteRule ^([^/]*)$ index.php/?node=$1 [L]

现在当我包含我的css文件时:

<link href="sitewide.css" rel="stylesheet" type="text/css" />

它不起作用。javascript也是如此。

4

4 回答 4

7

我一直在寻找一个简单的解决方案,它不会让我为所有相对路径(如 imgs、css、javascript...

所以在这里,在<head>你有问题的页面的标签之间添加这个:

<base href='http://www.mydomain.com/'>

这将使您的相对路径链接将从该基本链接开始。就那么简单。

<base>标记指定文档中所有相对 URL 的基本 URL/目标。将<base>标签作为元素内部的第一个<head>元素,以便头部中的其他元素使用来自该<base>元素的信息。

它对你有用吗?

于 2012-11-21T12:19:37.927 回答
3

考虑只重写不存在的路径,例如,如果文件或目录存在 - 不要重写它。

Wordpress 使用它来重写他们的永久链接,我认为这是一个很好的例子:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

如您所见,它们具有重写条件以排除现有文件/目录。

于 2012-04-22T23:26:39.533 回答
0

.htaccess文件正在重定向任何不包含/to 的内容index.php。考虑重写它以仅捕获您真正需要的路径。

或者,您可以使用指示为“Last”( ) 的规则开始您的文件L

RewriteRule ^/javascript.js$ $0 [L]

这将迫使 Apache 评估此 RewriteRule,然后停止该请求的所有其他规则。因此,您的.jsor.css文件将被正确提供,但您必须在.htaccess每个此类文件中创建一个新条目。我强烈推荐我的第一个建议。

于 2012-04-22T23:25:09.060 回答
0

试试这个:

RewriteEngine On   
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]*)$ index.php/?node=$1 [L]
于 2012-04-22T23:26:13.587 回答