我的 .htaccess 文件如下所示:
RewriteEngine On
RewriteRule ^([^/]*)$ index.php/?node=$1 [L]
现在当我包含我的css文件时:
<link href="sitewide.css" rel="stylesheet" type="text/css" />
它不起作用。javascript也是如此。
我的 .htaccess 文件如下所示:
RewriteEngine On
RewriteRule ^([^/]*)$ index.php/?node=$1 [L]
现在当我包含我的css文件时:
<link href="sitewide.css" rel="stylesheet" type="text/css" />
它不起作用。javascript也是如此。
我一直在寻找一个简单的解决方案,它不会让我为所有相对路径(如 imgs、css、javascript...
所以在这里,在<head>
你有问题的页面的标签之间添加这个:
<base href='http://www.mydomain.com/'>
这将使您的相对路径链接将从该基本链接开始。就那么简单。
该<base>
标记指定文档中所有相对 URL 的基本 URL/目标。将<base>
标签作为元素内部的第一个<head>
元素,以便头部中的其他元素使用来自该<base>
元素的信息。
它对你有用吗?
考虑只重写不存在的路径,例如,如果文件或目录存在 - 不要重写它。
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
如您所见,它们具有重写条件以排除现有文件/目录。
该.htaccess
文件正在重定向任何不包含/
to 的内容index.php
。考虑重写它以仅捕获您真正需要的路径。
或者,您可以使用指示为“Last”( ) 的规则开始您的文件L
:
RewriteRule ^/javascript.js$ $0 [L]
这将迫使 Apache 评估此 RewriteRule,然后停止该请求的所有其他规则。因此,您的.js
or.css
文件将被正确提供,但您必须在.htaccess
每个此类文件中创建一个新条目。我强烈推荐我的第一个建议。
试试这个:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]*)$ index.php/?node=$1 [L]