Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Klammer und Slash aus URL entfernen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Klammer und Slash aus URL entfernen


 
pjoern
23-08-2009, 12:50 
 
Hi,

ich habe ein Problem beim mod_rewrite

Wenn eine meiner URL's so aussieht:

http://www.meine-domain.de/guide-Montageplaner+(m/w).html

sieht meine Regel so aus:

RewriteRule ^guide.html$ index.php?page=guide [L]
RewriteRule ^guide\-argument\-([^-]+).html$ index.php?page=guide&op=arg&title=$1 [L]
RewriteRule ^guide\-([^-]+).html$ index.php?page=guide&op=readGuide&title=$1 [L]
RewriteRule ^guide\-([^-]+)\-([0-9]+).html$ index.php?page=guide&op=readGuide&title=$1&pg=$2 [L]

Die Regel funktioniert nur, wenn keine Klammer oder / drin ist.
Wie kann ich es schaffen, dass er nun auch die Klammer und den Slash umschreibt oder ignoriert?

Gruß Jörn

 
h3ll
23-08-2009, 13:30 
 
Die URL richtig schreiben. Ein Slash darf in einem Dateinamen nicht vorkommen.

 
pjoern
23-08-2009, 14:49 
 
Das kann nicht sein!
Schau dir mal die URL an, bei der geht es ja auch

Restaurants und Gastronomie - Beratung für Businesspläne,Gesundheitsausweis,Speisekarten und Existenzgründung (http://www.restaurant-berater.de/index.php?page=guide&op=readGuide&title=Bürokaufmann/-frau)

Jörn

 
AmicaNoctis
23-08-2009, 15:02 
 
Dort ist es ein Parameter, da es hinter dem ? steht.

 
pjoern
23-08-2009, 15:06 
 
Okay, ich verstehe.
Kann ich den Titel, der mir übergeben wird, so manipulieren, dass er symatisch korrekt als URL dargestellt wird und wenn je, wie?

 
AmicaNoctis
23-08-2009, 15:13 
 
Du kannst den Titel durch Suchen und Ersetzen so umformen, dass es als URL syntaktisch korrekt ist.

 
h3ll
23-08-2009, 15:15 
 
URL Encoding ? Wikipedia (http://de.wikipedia.org/wiki/URL_Encoding)

/ entspricht %2F


Oder mit PHP:

http://de.php.net/manual/en/function.rawurlencode.php

 
AmicaNoctis
23-08-2009, 15:23 
 
<ironie>bei "Montageplaner%20%29m%2fw%29" weiß gleich jeder, was gemeint ist</ironie> ;)

Ich finde die Ersetzungsmethode besser: "Montageplaner-(m-w)"

 
pjoern
23-08-2009, 15:33 
 
Wie könnte ich es denn am besten umsetzen?

Hier die Stelle im Quelltext:

foreach ($result as $row) {
$id = intval($row['id']);
$nome = outCode($row['nome']);

echo "<div id='block_linkstyle'><a href='index.php?page=guide&op=readGuide&title=".rawurlencode($nome)."' title='$nome'>$nome</a></div>\n";
}

 
AmicaNoctis
23-08-2009, 15:37 
 
Du arbeitest doch mit mod_rewrite, oder? Dann darfst du aber keine Links veröffentlichen, die über Parameter arbeiten, das soll doch mod_rewrite erledigen. Du erzeugst nur Links wie "guide-Montageplaner-(m-w)" und das kannst du mit preg_replace machen, also alle verbotenen Zeichen durch z. B. - ersetzen.

 
pjoern
23-08-2009, 15:49 
 
das versteh ich nicht.
An welcher Stelle muss ich nun manipulieren, direkt im Quelltext oder doch in der .htaccess ?

 
AmicaNoctis
23-08-2009, 15:53 
 
Du musst im Quelltext Links erzeugen, die deine .htaccess dann übersetzen kann. Wenn du die bereits übersetzten Links erzeugst, bringt die .htaccess ja nichts.

 
wahsaga
23-08-2009, 19:04 
 
Zum x-ten Mal: Keine Domains verlinken, die euch nicht gehören!
Bitte entferne die Verlinkung, und gewöhne dir an, example.com/.net/.org für Beispiel zu nutzen.


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