Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   URLs umschreiben und GET-String behalten (https://www.delphipraxis.net/81569-urls-umschreiben-und-get-string-behalten.html)

3_of_8 29. Nov 2006 15:03


URLs umschreiben und GET-String behalten
 
Morgen.

Ich hab grad ein Problem.

Ich will einen Zugriff auf ./actions/write_article umschreiben lassen auf ./article.php?action=write

Das Problem ist: Ich übergebe immer noch mit GET eine Session-ID. Der Request-String sieht dann etwa so aus:

/actions/write_article?sid=01234567890abcdef

Meine momentane RewriteRule sieht so aus:
RewriteRule ^actions[/\\]{1}write_article$ article.php?action=write [L]

Dabei wird jedoch die Session-ID abgeschnitten. Wie verhindere ich das?

Thorben77 29. Nov 2006 15:27

Re: URLs umschreiben und GET-String behalten
 
Probier’s mal so:
Code:
^/actions/write_article\?sid=(.+)$ article.php?action=write?sid=$1

3_of_8 29. Nov 2006 15:34

Re: URLs umschreiben und GET-String behalten
 
Nein, leider nicht.

Der RegEx matcht nicht, auch nicht wenn ich den / vorne entferne (der IMHO auch weg gehört).

freak4fun 29. Nov 2006 15:46

Re: URLs umschreiben und GET-String behalten
 
Da bedeutet du übergibst 2 Get-Parameter (action und id)? Die Parameter werden durch & getrennt (test.php?action=bla&id=12345)
Kannst du mal konkret ein Beispiel angeben, wie es umgeschrieben werden soll? Ich werd daraus irgendwie nicht schlau. :(

MfG
freak

3_of_8 29. Nov 2006 16:03

Re: URLs umschreiben und GET-String behalten
 
Fast.

Reinkommen tut:
actions/write_article?sid=0123456789abcdef

Rauskommen soll:

article.php?action=write&sid=01234567890abcdef

Thorben77 29. Nov 2006 16:41

Re: URLs umschreiben und GET-String behalten
 
Ups, ich hab ja oben ein <?> statt einem <&> zwischen die Parameter geschrieben :oops: .
Code:
^/actions/write_article\?sid=(.+)$ article.php?action=write&sid=$1
Aber gehen tut’s trotzdem nicht?

3_of_8 29. Nov 2006 16:44

Re: URLs umschreiben und GET-String behalten
 
jep

3_of_8 30. Nov 2006 14:14

Re: URLs umschreiben und GET-String behalten
 
*push*

1ceman 30. Nov 2006 15:27

Re: URLs umschreiben und GET-String behalten
 
Zitat:

Zitat von 3_of_8
Reinkommen tut:
actions/write_article?sid=0123456789abcdef

Rauskommen soll:

article.php?action=write&sid=01234567890abcdef

wenn ich es richtig verstanden habe, dann müsste es so gehen:
Delphi-Quellcode:
article.php?action=write&sid=$_REQUEST['sid']

freak4fun 30. Nov 2006 16:32

Re: URLs umschreiben und GET-String behalten
 
Code:



<?
   $str1 = "actions/write_article?sid=0123456789abcdef";
   echo $str1 . '
';
   ereg('([a-z]+)s/([a-z]+)_([a-z]+)\?sid=([a-z0-9]+)', $str1, $res);
   # .htacces:     '^([a-z]+)s/([a-z]+)_([a-z]+)\?sid=([a-z0-9]+)$ $3\.php\?$1=$2&sid=$4';

   #echo $res[0] . " " . $res[1] . " " . $res[2] . " " . $res[3] . " " . $res[4] . '
';
   echo $res[3] . '.php?' . $res[1] . '=' . $res[2] . '&sid=' . $res[4] . '
';
   echo "article.php?action=write&sid=0123456789abcdef";
?>
Vorgestern konnte ich reguläre Ausdrücke noch nicht mal lesen. Heute poste ich mal meinen Versuch. In php hab ich es hinbekommen, in der .htaccess konnte ich es leider nicht testen. Hab seit 15min Feierabend. ;) Aber vielleicht hilft es irgendwas.

MfG
freak

3_of_8 30. Nov 2006 16:47

Re: URLs umschreiben und GET-String behalten
 
Das Problem ist offenbar, dass der GET-String gar nicht mit umgeschrieben wird...

freak4fun 30. Nov 2006 18:20

Re: URLs umschreiben und GET-String behalten
 
Zitat:

Zitat von 3_of_8
Das Problem ist offenbar, dass der GET-String gar nicht mit umgeschrieben wird...

Wie meinst du das jetzt schon wieder? :mrgreen: :gruebel:

MfG
freak

r2c2 30. Nov 2006 18:58

Re: URLs umschreiben und GET-String behalten
 
Zitat:

Zitat von 3_of_8
Das Problem ist offenbar, dass der GET-String gar nicht mit umgeschrieben wird...

Genau so isses. Das Problem hatte ich auch schon(Umleitung Forensoftware dsdt.info). Bevor ModRewrite die URL in die Finger kriegt wird alles hinter dem ? abgeschnitten. Und mit ModRedirect gehts erst Recht nicht. Woher weiß ich das? Nach ewigem Rumprobieren hab ich mal das ModRewrite-LogLevel erhöht und mir das Log-File angeguckt. Da stehts schwarz auf weiß drin(außer man stellt die Farben um ;-))...

Einzige Möglichkeit, die ich gefunden hab:
Die gegebene Datei erstellen und per PHP den GET-String durch n RegEx jagen und dann per header(...) umleiten...

mfg

Christian

DGL-luke 30. Nov 2006 19:02

Re: URLs umschreiben und GET-String behalten
 
Gibts da irgendeinen Grund dafür, warum der Apache sowas macht? :shock:

r2c2 30. Nov 2006 19:51

Re: URLs umschreiben und GET-String behalten
 
Zitat:

Zitat von DGL-luke
Gibts da irgendeinen Grund dafür, warum der Apache sowas macht? :shock:

Weiß nicht wirklich. Hab mir bisher mit der Erklärung behollfen, dass ModRewrite u.a. dafür gedacht ist "suchmaschinenfreundliche" Liks zu erzeugen. Und, wenn das, was am Schluss rauskommt schlimmer ist, als der eigentliche Link, macht das wenig Sinn... Nur is das eben nicht der einzige Einsatzzweck...

mfg

Christian

3_of_8 30. Nov 2006 20:45

Re: URLs umschreiben und GET-String behalten
 
Naja aber eine Session-ID muss ich trotzdem erstellen und mitgeben...

Mit Cookies kann man das sicher vermeiden, aber es soll ja immer noch Leute geben, die keine keine Cookies mögen.

r2c2 30. Nov 2006 21:37

Re: URLs umschreiben und GET-String behalten
 
Zitat:

Zitat von 3_of_8
Naja aber eine Session-ID muss ich trotzdem erstellen und mitgeben...

Wie gesagt, schreib dir n PHP-file, in dem du das umleitest. In etwa so:

Code:
<?php
  $pattern = '...';
  $params = urldecode($_SERVER['QUERY_STRING']);
  $matches = array();
  $redirect_url = '...';
 
  if(preg_match($pattern, $params, $matches))
  {
    for($i = 1; $i <= <Anzahl>; $i++)
    {
      $redirect_url = str_replace('$' . $i, $matches[$i], $redirect_url);
    }
    header('Location: ' . $redirect_url);
  }
  else
  {
    header('Location: ' . '...');
  }
?>
Das Ganze anpassen und als actions/write_article/index.php abspeichern. Dann sollte es funktionieren...

mfg

Christian

3_of_8 30. Nov 2006 22:08

Re: URLs umschreiben und GET-String behalten
 
Najaa, ein bissel umständlich, vor allem dann, wenn man sowas hat wie articles/Artikelname, dann müsste ich für jeden Artikel nen Ordner+PHP-Datei erstellen.

Daniel G 30. Nov 2006 22:09

Re: URLs umschreiben und GET-String behalten
 
Zitat:

Zitat von 3_of_8
dann müsste ich für jeden Artikel nen Ordner+PHP-Datei erstellen.

Kann man alles automatisieren... :mrgreen:

3_of_8 30. Nov 2006 22:10

Re: URLs umschreiben und GET-String behalten
 
:mrgreen:

Wie macht das eigentlich die DP? Da gibts ja auch so was ähnliches.

3_of_8 2. Dez 2006 09:43

Re: URLs umschreiben und GET-String behalten
 
*push*

3_of_8 14. Jan 2007 11:45

Re: URLs umschreiben und GET-String behalten
 
*push*

r2c2 14. Jan 2007 13:26

Re: URLs umschreiben und GET-String behalten
 
Welche Apache-Version hast du? Bei nem 2er hätt ich vielleicht noch n Ansatz...

mfg

Christian

3_of_8 14. Jan 2007 13:32

Re: URLs umschreiben und GET-String behalten
 
Die soll variabel sein. Wie gesagt, wie funktioniert das denn bei der DP?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz