为什么这个Url RewriteRule不能用于CSS& JavaScript文件?

时间:2012-01-17 07:54:18

标签: php .htaccess

Options +FollowSymLinks
RewriteEngine on
#RewriteBase /

RewriteRule ^tricks/([0-9]+) tricks.php?show=one&tid=$1 [NC,L]
RewriteRule ^tricks/([a-z]+) tricks.php?show=frmsec&sec=$1 [NC,L]
RewriteRule ^tricks/?$ tricks.php?show=all [NC,L]

RewriteRule ^discussion/?$ discussion.php?show=all [NC,L]

这不加载CSS和Javascript文件

http://localhost/web/trickshttp://localhost/discussion正常运作

3 个答案:

答案 0 :(得分:0)

未经过测试(因为我无法在此测试),但您需要排除文件。这是一个例子(来自TYPO3的.htacces的信用):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ $1.$3 [L]

EdIt根据@bouke的评论:

您的样式表链接中有相对路径。这不行。当您使用localhost / web / tricks时,相对路径是错误的(因为/ web / tricks中没有CSS文件夹)。

您需要使用绝对路径或使用基本网址标记(<base ...>

答案 1 :(得分:0)

RewriteCond %{REQUEST_FILENAME} !-f之前添加RewriteRule

答案 2 :(得分:0)

如果您使用网址http://localhost/web/tricks/000而不是localhost/tricks.php?show=one&tid=000,则您的相对网址将相对于/web/tricks/而不再是/

您必须将href更改为../../CSS/content.css或最好使用/CSS/content.css。后者将创建相对于根目录的路径,而不是当前页面的目录&#39;。