URL ohne index.php

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Dragonblast
Regular
Posts: 23
Joined: Thu Jan 11, 2007 3:05 pm

URL ohne index.php

Post by Dragonblast »

Hallo allerseits !

Meine URL's sind so dargestellt:
http://www.xyz.ch/blog/index.php?/archives/2007/04.html

Wie kann man da das index.php rausnehmen ?


Freundliche Grüsse
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: URL ohne index.php

Post by garvinhicking »

Hi!

Über die Konfiguration, "URL Rewriting". Dass muss dein Server jedoch understützen (custom .htaccess und/oder mod_rewrite).

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Dragonblast
Regular
Posts: 23
Joined: Thu Jan 11, 2007 3:05 pm

Post by Dragonblast »

Diese Option ist bereits eingestellt ( Admin: +/- Design und Optionen -> URL-Formung -> Use Apache mod_rewrite ), und der Server unterstützt rewriting.

Gibts da noch andere Möglichkeiten ? ( Hat schonmal mit einem S9Y-Blog funktioniert auf dem Server )
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Wenn das aktiviert ist dürfte nirgendwo "index.php?/..." auftauchen. Nenn mal deine URL und sag uns wo das Auftritt.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Dragonblast
Regular
Posts: 23
Joined: Thu Jan 11, 2007 3:05 pm

Post by Dragonblast »

Hey

Blogurl wäre diese hier: http://www.bkanal.ch/blog/

Und das "index.php?/" tritt beinahe Überall auf ( Titellink, Authorlink etc. )

Freundliche Grüsse
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Es ist technisch unmöglich dass auf dieser Seite "URL-Rewriting" in der s9y Konfiguration auf "Apache Errorhandling" oder "mod_rewrite" steht. Bitte prüfe es erneut und korrigiere die Einstellung. :)

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Dragonblast
Regular
Posts: 23
Joined: Thu Jan 11, 2007 3:05 pm

Post by Dragonblast »

Habe es erneut überprüft und die Einstellung nochmals auf mod_rewrite gesetzt. Jedoch ohne Erfolg.
Das Problem müsste woanders liegen. Denn diese URL:
http://www.bkanal.ch/blog/index.php?/ar ... nert!.html
funktioniert auch so:
http://www.bkanal.ch/blog/archives/1262 ... nert!.html

Das würde doch heissen, das mod_rewrite läuft, oder ?


Freundliche Grüsse
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Mach mal ein phpMyAdmin auf und führe folgende SQL-Abfrage aus:

Code: Select all

SELECT * FROM serendipity_config WHERE name = 'rewrite';
(wenn du nen anderen Datenbankpräfix hast, den natürlich anpassen)

Dass die URL klappt kann auch einfach heißen dass die .htaccess Datei das korrekt umleitet. Wie s9y die Links aber generiert hängt von obiger Einstellung ab. Es gibt also zwei Teile vom URL Rewritung: Einmal die Umformung für die Links innerhalb von Serendipity, und dann einen Teil der umgeformte Links auf die richtige URL umbiegt.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Dragonblast
Regular
Posts: 23
Joined: Thu Jan 11, 2007 3:05 pm

Post by Dragonblast »

Code: Select all

SQL-Abfrageergebnis

Host: localhost
Datenbank: bkanalch_cakephp
Erstellungszeit: 27. April 2007 um 18:27
Erstellt von: phpMyAdmin 2.6.2-Debian-3sarge3 / MySQL 4.1.15-Debian_0.dotdeb.4-log
SQL-Befehl: SELECT * FROM blog_config WHERE name = 'rewrite' LIMIT 0, 30;
Zeilen: 1
name 	 value 	 authorid
rewrite  rewrite   0

Genau diese Einstellung habe ich geprüft... Kanns mir echt nicht erklären..
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Hm. Stells mal testweise auf "errordocs", den Inhalt der Variable?

Das ist sehr strange. Du hast aber schon ne aktuelle s9y version und die nicht selber gepatcht an irgendwelchen stellen, oder?

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Dragonblast
Regular
Posts: 23
Joined: Thu Jan 11, 2007 3:05 pm

Post by Dragonblast »

Das Einzige was ich gepatcht habe, war die .htaccess. Und zwar weil der Blog in CakePHP läuft, und so der Pfad angepasst werden musste.

Diese sieht nun wie folgt aus:

Code: Select all

# BEGIN s9y
ErrorDocument 404 index.php
DirectoryIndex index.php
php_value session.use_trans_sid 0
php_value register_globals off

RewriteEngine On
RewriteBase /blog/
RewriteRule ^(archives/([0-9]+)-[0-9a-z\.\_!;,\+\-\%]+\.html) index.php?/$1 [NC,L,QSA]
RewriteRule ^(authors/([0-9]+)-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/categories/([0-9;]+)-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/authors/([0-9]+)-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1 [NC,L,QSA]
RewriteRule ^(categories/([0-9;]+)-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^archives([/A-Za-z0-9]+)\.html index.php?url=/archives/$1.html [NC,L,QSA]
RewriteRule ^([0-9]+)[_\-][0-9a-z_\-]*\.html index.php?url=$1-article.html [L,NC,QSA]
RewriteRule ^feeds/(.*) index.php?url=/feeds/$1 [L,QSA]
RewriteRule ^unsubscribe/(.*)/([0-9]+) index.php?url=/unsubscribe/$1/$2 [L,QSA]
RewriteRule ^approve/(.*)/(.*)/([0-9]+) index.php?url=approve/$1/$2/$3 [L,QSA]
RewriteRule ^delete/(.*)/(.*)/([0-9]+) index.php?url=delete/$1/$2/$3 [L,QSA]
RewriteRule ^(admin|entries)(/.+)? index.php?url=admin/ [L,QSA]
RewriteRule ^archive/? index.php?url=/archive [L,QSA]
RewriteRule ^(index|atom[0-9]*|rss|b2rss|b2rdf).(rss|rdf|rss2|xml) rss.php?file=$1&ext=$2
RewriteRule ^(plugin|plugin)/(.*) index.php?url=$1/$2 [L,QSA]
RewriteRule ^search/(.*) index.php?url=/search/$1 [L,QSA]
RewriteRule ^comments/(.*) index.php?url=/comments/$1 [L,QSA]
RewriteRule ^(serendipity\.css|serendipity_admin\.css) index.php?url=/$1 [L,QSA]
RewriteRule ^index\.(html?|php.+) index.php?url=index.html [L,QSA]
RewriteRule ^htmlarea/(.*) htmlarea/$1 [L,QSA]
RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA]

<Files *.tpl.php>
    deny from all
</Files>

<Files *.tpl>
    deny from all
</Files>

<Files *.sql>
    deny from all
</Files>

<Files *.inc.php>
    deny from all
</Files>

<Files *.db>
    deny from all
</Files>

# END s9y

Schalte ich nun auf errodocs, dann sieht die .htaccess so aus:

Code: Select all

# BEGIN s9y
ErrorDocument 404 /blog/index.php
DirectoryIndex /blog/index.php
php_value session.use_trans_sid 0
php_value register_globals off

<Files *.tpl.php>
    deny from all
</Files>

<Files *.tpl>
    deny from all
</Files>

<Files *.sql>
    deny from all
</Files>

<Files *.inc.php>
    deny from all
</Files>

<Files *.db>
    deny from all
</Files>

# END s9y
Und ich erhalte vom Browser folgende Meldung:

Code: Select all

Fehler: Umleitungsfehler
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Also ich verstehe nicht ganz was abläuft. Ich reduziere den Thread jetzt mal auf das eigentliche Problem, die .htaccess hat damit nichts zu tun (da dies die "Annahme"-Stelle ist, nicht die "Ausgabe-Stelle" von links).

Die Ausgabestelle von internen Serendipity-Links befindet sich in der DAtei

include/functions_permalinks.inc.php

Dort gibt es die Funktion

serendipity_archiveURL()

diese erzeugt einen Link zu einem Eintrag und benutzt dafür eine Hilfsfunktion serendipity_rewriteURL(), die den spezifischen Link so umformatiert dass er "hübsch" aussieht.

Diese Funktion benutzt folgendes Codesegment:

Code: Select all

function serendipity_rewriteURL($path, $key='baseURL', $forceNone = false) {
    global $serendipity;
    return $serendipity[$key] . ($serendipity['rewrite'] == 'none' || ($serendipity['rewrite'] != 'none' && $forceNone) ? $serendipity['indexFile'] . '?/' : '') . $path;
}
Sprich, es fügt die Variable $serendipity['baseURL'] vor den Link, und prüft dann ob $serendipity['rewrite'] einen anderen String als "none" enthält. Wenn es "none" enthält, wird das "index.php?/" davor gehangen, sonst nicht.

$serendipity['rewrite'] wird anhand des Datenbankwertes "rewrite" in der serendipity_config-Tabelle gesetzt. In deinem Fall muss $serendipity['rewrite'] also auf 'rewrite' oder 'errordocs' stehen.

Wenn es aber darauf steht, ist es eigentlich unmöglich, dass ein "index.php?/" davor gehangen wird.

Hast Du mal deine Permalinkkonfiguration geprüft? Nicht dass dort irgendwo ein "index.php?/" eingetragen ist?

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Dragonblast
Regular
Posts: 23
Joined: Thu Jan 11, 2007 3:05 pm

Post by Dragonblast »

Nochmals besten Dank für deine Mühen !!

Bei den Permalinks ist alles korrekt ( ohne index.php ) eingestellt. Hab ich
nochmals gechecked.

Habe die Funktion mal so umegestellt, dass sie nur noch "statisch" diese
Links erzeugt. Und die funktioniert ohne Problem ( Links werden korrekt angezeigt ).

Code: Select all

function serendipity_rewriteURL($path, $key='baseURL', $forceNone = false) {
    global $serendipity;
    return $serendipity[$key] . $path;
}
Nun kann es doch nur noch daran liegen, dass der Wert vom rewrite Feld nicht übergeben wird...

Ich habe die Variable so versucht auszugeben:
echo "----" . $serendipity['rewrite'] . "**";

Und kriege nur ein "----**". Woran könnte das noch liegen ?


Vielen Dank nochmals !
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Hm, das klingt danach als wäre $serendipity['rewrite'] nicht gesetzt?!

Editier mal deine index.php, und direkt nach dem include 'serendipty_config.inc'.php fügst du ein:

Code: Select all

die('<pre>' . print_r($serendipity, true) . '</pre>');
Schau dann mal ob 'Rewrite' dort auftaucht. Ich wüsste nicht wieso 'rewrite' nicht in $serendipity geschrieben werden könnte, aber die anderen werte auch. Nur wenn die spalte 'authorid' in serendipity_config für den wert 'Rewrite' auf einem Wert ungleich 1 stünde, aber laut deinem SQL-Auszug steht das ja (wie erforderlich) auf 0...

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Dragonblast
Regular
Posts: 23
Joined: Thu Jan 11, 2007 3:05 pm

Post by Dragonblast »

Ist im Array vorhanden:

Code: Select all

Array
(
    [GET] => Array
        (
            [action] => 
            [adminAction] => 
        )

    [POST] => 
    [COOKIE] => 
    [templatePath] => templates/
    [serendipityPath] => [ZENSUR]
    [indexFile] => index.php
    [version] => 1.0.3
    [defaultTemplate] => carl_contest
    [production] => 1
    [rewrite] => rewrite
    [messagestack] => Array
...
Post Reply