2010-12-30 5 views
0

ich ein bisschen ein ausgefallenes Problem mit meiner CodeIgniter Installation haben, ich bin mit modrewrite um meine URLs zu verkürzen, zum Beispiel habe ich eine api Seite:CodeIgniter CSS-Datei nicht enthalten

http://www.mydomain.com/api

und es funktioniert wirklich gut, meine .htaccess-Datei sieht wie folgt aus:

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

Aber was wirklich seltsam ist, wenn ich einen Schrägstrich ein:

http://www.mydomain.com/api/

Die API-Seite geladen ok aber nicht die Basis CSS-Datei enthält, die auf allen Seiten eingeschlossen ist, wäre es gut, wenn es etwas laden nicht überhaupt, aber ich muss aufhören, die tatsächliche API-Seite zu laden. Jeder Rat wäre hilfreich,

Vielen Dank!

UPDATE: Ich habe festgestellt, dass, wenn ich Quelle meiner CSS-Datei aus den folgenden, wenn die CSS Lasten kommt korrekten Darstellung:

http://www.mydomain.com/css/all.css

Aber wenn es es kommt von

nicht geladen werden kann

http://www.mydomain.com/api/css/all.css

Antwort

1

Stellen Sie sicher, dass Sie einen Schrägstrich in Ihrem base_url in der config.php Datei:

$config['base_url'] = "http://www.mydomain.com/"; 

Und immer rufen Sie die base_url() im Umgang mit Links ... etc

<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>css/all.css"> 

EDIT:
Bitte beachten Sie, dass ich die mod_rewrite von dieser wiki page benutze aber seit meiner CI-Installation nicht auf der Wurzel (innerhalb /ci173/) t er RewriteBase ist nicht / aber /ci173/.

1

Wenn Sie einen relativen URL-Pfad wie css/all.css oder verwenden (beide sind gleichwertig), müssen Sie beachten, dass relative URL paths (like any relative URLs) are resolved using a base URL die URL des aktuellen Dokuments ist, wenn nicht anders angegeben.

So in Ihrem Fall /api oder /api/ ist die Basis-URL-Pfad und die relative URL-Pfad css/all.css anders gelöst ist auf dem Basis-URL-Pfad abhängig:

  • /api + css/all.css/css/all.css
  • /api/ + css/all.css/api/css/all.css

Um dies zu erreichen, müssen Sie entweder

  • Verwendung absolute URL-Pfade wie /css/all.css, die von der Basis-URL-Pfad unabhängig sind
  • specify a different base URL in your HTML document (z.B./); aber beachten Sie, dass diese alle relative URLs und nicht nur relativ URL-Pfade
  • passen Sie Ihre relative URL Pfade beeinflussen Ihre Basis URL-Pfade zur Suite:
    • für /api Verwendung css/all.css
    • für /api/ Verwendung ../css/all.css
    • für /api/foo/bar/ Verwendung ../../../css/all.css usw.

Ich denke, die erste Lösung ist die einfachste.