Meine aktuelle HTACCESS sieht so aus.HTACCESS Redirect zu index.php: PHP-Ebene in Unterordner beheben
# Run everything else but real files through index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
RewriteRule ^(.*)$ index.php?p=$1 [NC,L,QSA]
Großes Stück Code, wo, wenn ich in geben, was ein Unterordner Verzeichnis sein würde, leitet es als Parameter an index.php. Funktioniert gut für etwas http://localhost/blah
(die wie http://localhost/index.php?p=blah
umleitet), aber nicht so gut für http://localhost/blah/boink
.
Das Problem mit letzterem ist, dass die Umleitung funktioniert und auf index.php umleitet, aber aus irgendeinem Grund glaubt die Seite, dass es auf der Unterordner-Ebene blah
ist. Also sind alle meine fest codierten ../
für meine js
, css
, include
und require_once
Pfade jetzt technisch "falsch". Wie auch immer, dies zu beheben?
In PHP, wenn ich versuche, dies zu tun:
$file_url = explode("/", $_SERVER['PHP_SELF']);
// subtract 1 for left/and 1 for current file
$dir_loop = count($file_url) - 2;
$up_dirs = "";
// loop until to root directory
for ($i=0; $i<$dir_loop; $i++) {
$up_dirs .= "../";
}
... das scheint nicht zu funktionieren, weil die index.php im Stammordner Ebene ist. Ich vermute, dass dies ein HTACCESS-Problem sein könnte? Gedanken?
Verwenden Sie den '' Tag für die Anbindung an JS/CSS usw. –
hjpotter92
_ „aber aus irgendeinem Grund, die Seite glaubt, dass es im Unterordner Ebene ist,' blah'“_ - Das ist kein "Glaube", sondern einfach die Realität. Der _client_ ist derjenige, der relative Pfade zu absoluten auflöst, und _client_ hat das Dokument von der Adresse "http: // localhost/blah/boink" angefordert. Das ist alles, was es weiß; Es weiß nicht, was Ihr _server_ mit der Anfrage _internally_ tut. – CBroe
Sie können immer bestimmte Dir, z. 'rewritecond!^(js | css | include) /' Und beachte, dass require/include in PHP im Dateisystem funktioniert. es sei denn, Sie tun etwas (dummes) wie 'include ('http://yoursite.com/include/foo.php')', alles, was php zum Laden einer Datei tut, wird NIEMALS von apache oder mod_rewrite gesehen. –