.htaccess - 路径末尾的斜杠不加载CSS

时间:2014-01-28 07:35:55

标签: css .htaccess

当我打开http://my-domain.com/register时,它运行正常 但是当我尝试打开http://my-domain.com/register/时,它会错过CSS和其他东西

我的public_html文件夹中有两个页面,一个CSS目录和.htaccess -

的public_html

  • 的index.php
  • register.php
  • CSS(目录)
  • 图像(目录)
  • 的.htaccess

.index.html

<?php

    $path = $_SERVER['REQUEST_URI'];

    $chunks = explode("/", $path);

    print_r($chunks);


    if($chunks[1] == "register") {
        require_once("register.php");       
    }

?>

的.htaccess

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</ifModule>

2 个答案:

答案 0 :(得分:2)

您需要添加:

<base href="/" />

到您的页眉。

或者将您的链接更改为绝对网址。

结尾处的“/”表示浏览器正在使用/register/是相对网址,而不是网址为/时的/register


编辑:

  

是否有任何.htaccess方法可以解决这个问题。

但是它确实效率很低,如果你要将css或图像放在其他地方,规则可能并不总能修复它们(甚至可能会破坏它们):

RewriteCond %{REQUEST_URI} !^/CSS/
RewriteRule ([^/]+\.css)$ /CSS/$1 [L]

RewriteCond %{REQUEST_URI} !^/Images/
RewriteRule ([^/]+\.(png|jpe?g|gif))$ /Images/$1 [L]

答案 1 :(得分:1)

这是一种使用重写规则修复css / js / images链接的方法:

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# fix css/images/js links
RewriteRule ^.+?/((?:css|images|js)/.+)$ $1 [L,NC,NE,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</ifModule>