| SEO - Suchmaschinen Tricks und Tipps Alles zum Thema "Techniken zur Suchmaschinenoptimierung von Webseiten". Bitte keine Werbelinks |
 |

25-01-2009, 23:59
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
Rewritemaps
Hi,
ich bastel gerade an Rewritemaps damit ich "schönere" urls bauen kann.
leider funktioniert alles nicht gerade so wie ich mir das vorstelle.
wenn ich die webseite folgendermaßen aufrufe erscheint beim erstenmal eine weiße seite. jedes echo in der users.php wird igoriert.
http://www.example.de/profile-UzumakiNaruto
vhost config
Code:
RewriteLock ***/rewritelock.txt
<VirtualHost *:80>
ServerName ***
DocumentRoot ***
RewriteEngine On
RewriteMap users "prg:/usr/bin/php ***/users.php"
ErrorLog /var/log/apache2/error.***.log
LogLevel warn
CustomLog /var/log/apache2/access.***.log combined
</VirtualHost>
.htaccess im documentroot
Code:
RewriteRule ^profile-(.*)$ profile.php?id=${users:$1} [NC,L]
users.php
PHP-Code:
#!/usr/bin/php
<?php
mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name);
$filename = "log.txt";
if (!$handle = fopen("$filename", "a+")) {
echo "Cannot open file ($filename)";
exit;
}
while( $url = trim(fgets(STDIN))) {
$sql = sprintf("SELECT user_id FROM ".DB_PREFIX."users WHERE user_name = '%s'", mysql_real_escape_string($username));
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$id = $row['user_id'];
$today = date("j-n-Y, G:i:s");
if (fwrite($handle, $today."|".$url."|rn") === FALSE) {
echo "Cannot write to file (".$filename.")";
exit;
}
if(fwrite(STDOUT, $id.".html\r\n") === FALSE) {
fwrite($handle, "CANT WRITE $urln");
}
}
fclose($handle);
exit;
?>
danke für eurer hilfe schonmal im voraus
__________________
Gruß
Uzu
|

26-01-2009, 00:05
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Re: Rewritemaps
Zitat:
|
[i]wenn ich die webseite folgendermaßen aufrufe erscheint beim erstenmal eine weiße seite.[/B]
|
Und die Logs sagen was dazu?
Zitat:
|
jedes echo in der users.php wird igoriert.
|
Na wo sollte die Ausgabe eines solchen echos denn auch landen ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

26-01-2009, 00:18
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
ErrorLog /var/log/apache2/error.***.log sagt
File does not exist: asdf, referer: http://www.example.de/news
und das echo soll mir irgendwie eine ausgabe bringen .. sei es auf der weißen seite oder in den log dateien
die rewritelock.txt datei ist leer und die $filename = "log.txt"; wurde noch nicht erstellt.
ein normales rewritemap mit txt funktioniert .. aber ads ist gerade vorteilhaft wenn ich das mit txt machen würde
__________________
Gruß
Uzu
|

26-01-2009, 00:36
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Original geschrieben von UzumakiNaruto
ErrorLog /var/log/apache2/error.***.log sagt
File does not exist: asdf, referer: http://www.example.de/news
|
Und, sollte "asdf" denn existieren?
Zitat:
|
und das echo soll mir irgendwie eine ausgabe bringen .. sei es auf der weißen seite oder in den log dateien
|
Na ja, ich fuerchte, das RewriteMap-Script wird in einer Umgebung ausgefuehrt, wo kein "Platz" fuer solche Debug-Ausgaben ist.
Es hat auf STDOUT entweder einen Substitionswert fuer den umzuschreiben URL-Part zu liefern, oder NULL.
Wenn du von da aus Debugausgaben haben willst - dann wuerde ich vielleicht eher error_log() nehmen, und in ein definiertes Logfile schreiben lassen.
Zitat:
|
die rewritelock.txt datei ist leer
|
Bin mir nicht sicher, ob da irgendwelche Ausgaben drin zu erwarten waeren - das wird doch, soweit ich erkennen kann, nur fuer's Locking benutzt.
Zitat:
|
und die $filename = "log.txt"; wurde noch nicht erstellt.
|
Und wenn du das Script erst mal nicht als RewriteMap aufrufen laesst - sondern normal ueber den PHP-Kommandozeileninterpreter ausfuehren laesst?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

26-01-2009, 00:56
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
OffTopic: Welcome back! :-)
|

26-01-2009, 01:03
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
Zitat:
|
Und, sollte "asdf" denn existieren?
|
nein .. habe auch alle php dateien mit grep -R 'asdf' * durchsucht .. nichts gefunden
Zitat:
|
Und wenn du das Script erst mal nicht als RewriteMap aufrufen laesst - sondern normal ueber den PHP-Kommandozeileninterpreter ausfuehren laesst?
|
Could not open input file: das bekomme ich dann
__________________
Gruß
Uzu
|

27-01-2009, 07:53
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
Zitat:
Original geschrieben von unset
OffTopic: Welcome back! :-)
|
OffTopic: danke
ich habe es hinbekommen  aber leider nur einmal.
habe dann nochmal nachgelesen und apache führt das script auch nur einmal aus und muss dann in einer endlosschleife mitlaufen.
nur wenn ich das alles in eine endlosschleife packen will passiert gar nichts mehr
einmal lauffähig
PHP-Code:
set_time_limit(0); # forever program!
$users = fopen("php://stdin","r");
$username = trim(fgets($users));
$result = mysql_query(sprintf("SELECT user_id FROM ".DB_PREFIX."users WHERE user_name = '%s'", mysql_real_escape_string($username)));
$row = mysql_fetch_assoc($result);
echo $row['user_id'];
keinmal lauffähig
PHP-Code:
set_time_limit(0); # forever program!
while (1) {
$users = fopen("php://stdin","r");
$username = trim(fgets($users));
$result = mysql_query(sprintf("SELECT user_id FROM ".DB_PREFIX."users WHERE user_name = '%s'", mysql_real_escape_string($username)));
$row = mysql_fetch_assoc($result);
echo $row['user_id'];
}
der rewritelog sagt nicht mal "map ok" .. er bleibt genau eine zeile davor stehen und wartet .. und wartet .. und wartet
habt ihr noch ideen?
danke im voraus
__________________
Gruß
Uzu
|

27-01-2009, 12:52
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Warum denn jetzt wieder eine einfache echo-Ausgabe? Ich bin mir nicht sicher, ob das mit einer Ausgabe auf STDOUT identisch ist.
Und dann steht in der mod_rewrite-Doku noch "A common mistake is to use buffered I/O on stdout."
Vielleicht muesste man die Ausgabe noch explizit flushen ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

27-01-2009, 16:33
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
http://de.php.net/manual/de/wrappers.php.php
Zitat:
|
php://output allows you to write to the output buffer mechanism in the same way as print() and echo().
|
hier die logs als zip .. habe unwichtige daten wie ip, zeit und pfad entfernt.
in der *_ok.log geht es gleich weiter .. auch wenn er sein ergebnis hat.
Code:
RewriteRule ^profile-(.*)$ profile.php?lookup=${users:$1} [NC,L]
__________________
Gruß
Uzu
|

27-01-2009, 16:34
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
anhang:
__________________
Gruß
Uzu
|

27-01-2009, 16:53
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Original geschrieben von UzumakiNaruto
php://output allows you to write to the output buffer mechanism in the same way as print() and echo().
|
Schoen - aber ich bezweifle, ob php://output und php://stdout das gleiche sind.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

27-01-2009, 22:14
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
Zitat:
Original geschrieben von wahsaga
Schoen - aber ich bezweifle, ob php://output und php://stdout das gleiche sind.
|
huch .. verdammt .. zu schnell gelesen.
aber das echo klappt wenn ich nur EINE id ausgeben lasse.
die endlosschleife will dagegen gar nicht arbeiten.
habe es vorhin auch mit $stdout = fopen('php://stdout", "w"); frwite($stdout, $userid); probiert .. ohne ergebnis
__________________
Gruß
Uzu
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|