php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Mod Rewrite mit ajax-variablen


 
dankuxyz
13-10-2010, 14:50 
 
Hallo. Ich expermentiere gerade mit ajax (jquery-framework) und mod_rewrite und möchte gerne folgende Konstualation realisieren:

Die urls werden dynamisch durch jquery erzeugt und sehen so aus:
http://example.de/#website
http://example.de/#internet (http://example.de/#internet)

so soll die lösung aussehen:
http://example.de/apps/website (http://example.de/apps/website)
http://example.de/apps/internet (http://example.de/apps/internet)

mein lösungsvorschlag:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /

RewriteCond %{REQUEST_URI} apps/(.") /$
RewriteRule ^#(.*)$ /apps/(.*) [L]

Was funktioniert daran nicht?

die abgespeicherte .htaccess datei liegt im selben unterverzeichnis (von htdocs) wie die daten.

 
AmicaNoctis
13-10-2010, 15:09 
 
Hallo,

alles in einer URL nach dem #-Zeichen ist der Fragment Identifier, der auf HTTP-Eben keine Rolle spielt und ignoriert wird. Lediglich dein Browser nutzt ihn, um innerhalb eines Dokuments zu einer bestimmten Sprungmarke zu kommen. In HTML-Dokumenten sind das Elemente mit dem jeweiligen id- oder name-Attribut. In PDF-Dokumenten kann man so zu einer bestimmten Seite springen.

Bitte entlinke deine Links und verwende die reservierten Domainnamen für Beispiellinks (siehe Signatur).

Gruß,

Amica

 
dankuxyz
13-10-2010, 15:26 
 
und wenn anstelle von den #website ein ?var=website stehen würde?
das ganze würde dann so aussehn:

http://example.de/?var=website (http://example.de/?var=website)
http://example.de/?var=internet (http://example.de/?var=internet)

so soll die lösung aussehen:
http://example.de/apps/website (http://example.de/apps/website)
http://example.de/apps/internet (http://example.de/apps/internet)

mein lösungsvorschlag:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /

RewriteCond %{REQUEST_URI} apps/(.") /$
RewriteRule ^#(.*)$ /apps/(.*) [L]

 
onemorenerd
13-10-2010, 15:37 
 
Wenn du die URLs schon änderst, warum dann nicht gleich example.com/website bzw. example.com/internet? JQuery sendet den üblichen "X-Requested-With"-Header. Mit einer rewrite condition kannnst du also zwischen AJAX- und normalen Requests unterscheiden und unterschiedlich rewriten.

 
dankuxyz
13-10-2010, 17:23 
 
ganz einfach. weil die daten nicht unter /intranet oder /website liegen.
der name ist quasi nur ein alias.
der wirkliche inhalt wird aus anderern ordner bezogen.

 
onemorenerd
13-10-2010, 17:47 
 
Ist schon klar. Aber die Daten liegen ja auch nicht unter ?var=irgendwas.
Will sagen: Du schreibst den Request doch sowieso um. Also warum clientseitig komplizierte URLs bauen?

Anweisung für ModRewrite - mein Vorschlag:
Wenn HTTP-Header X-Requested-With == 'XMLHttpRequest' und Request matcht domain/foo, dann umschreiben auf domain/apps/foo.

Deine Idee war:
Wenn Request matcht domain/?var=foo, dann umschreiben auf domain/apps/foo.

Ergebnis ist das selbe, aber mit meinem Vorschlag wirkt das Rewriting wirklich nur auf AJAX-Requests. Wohingegen bei deiner Idee die Gefahr besteht, dass auch andere, Nicht-AJAX-Requests umgeschrieben werden, weil sie "zufällig" matchen.

 
wahsaga
13-10-2010, 17:50 
 
Die von dir verwendete .de-Domain existiert, ist aber vermutlich nicht deine Webseite.

example.com/.net/.org sind für Beispiele vorgesehen. Bitte passe deine Beiträge entsprechend an.


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:08 Uhr.