Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Rewrite Rule

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
emel
PostRank 9
PostRank 9
Beiträge: 1045
Registriert: 19.12.2007, 10:29

Beitrag von emel » 18.04.2008, 06:28

Ich habe da ein Problemchen mit einer RewriteRule

Code: Alles auswählen

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)/page/([1-9]+)/$ $1/category/page/$2/ [L]

Die Regel soll URLs von
www.domain.tld/theme/page/2 auf www.domain.tld/category/theme/page/2 umleiten. Leider tut sie das nicht :(
Was mache ich falsch?

selbst eine einfache variante für nur eine einzige url funktioniert nicht:

Code: Alles auswählen

Rewrite Rule www.domain.tld/theme/page/2 www.domain.tld/category/theme/page/2 [L] 
Suche / Biete L*nks - PM an mich

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 18.04.2008, 18:15

Du gehst das ein wenig falsch an würde ich sagen.

Ich notiere mir immer erstmal worum es eigentlich geht:

Von: https://www.domain.tld/theme/page/2
Nach: https://www.domain.tld/category/theme/page/2

Also soll ja effektiv nur ein "category/" eingefügt werden. Das sähe dann zum Beispiel so aus:

RewriteRule ^(.*)$ https://www.domain.tld/category/$1 [L]

Je nach dem, ob du wirklich eine Weiterleitung (301, 302 etc) haben möchtest musst du dann noch ",R=301" hinter dem L einfügen.

Wenn dein Umleitungswunsch natürlich komplexer oder einfach anders ist, sieht die Rule wiederum anders aus. Zusätzlich sollte man noch per RewriteCond die Umleitung auf bestimmte URLs (Zum Beispiel alle die 'theme' enthalten, wie auch immer gewünscht) beschränken.

Ok?

emel
PostRank 9
PostRank 9
Beiträge: 1045
Registriert: 19.12.2007, 10:29

Beitrag von emel » 18.04.2008, 18:46

Du hast recht. Im Prinzip möchte ich nur ein category einfügen.

Leider bekomme ich mit der von dir angegebenen RewriteRule einen Internal Server Error.

Zwischenzeitlich hatte ich noch folgendes versucht

Code: Alles auswählen

RewriteRule ^[^/]+/page/[1-9][0-9]*/$ /category/$0 [L]
Das sollte es eigentlich auch tun, nur:

ist meine .htaccess bereits mit folgenden zeilen gefüllt:

Code: Alles auswählen

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase 
RewriteRule ^&#91;^/&#93;+/page/&#91;1-9&#93;&#91;0-9&#93;*/$ /category/$0 &#91;L&#93;
RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteRule . /index.php &#91;L&#93;
</IfModule>
das zusammenspiel mit dem Rest scheint mir nicht ganz sauber zu sein :(

Vielleicht hierzu noch eine Idee?
Suche / Biete L*nks - PM an mich

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 18.04.2008, 18:59

Natürlich, ich hatte da ne Endlosschleife gebastelt ;) Da muss natürlich noch ne RewriteCond davor:

Code: Alles auswählen

RewriteCond %&#123;REQUEST_URI&#125; !^/category/
RewriteRule ^&#40;.*&#41;$  http&#58;//www.domain.tld/category/$1 &#91;L&#93; 
Demnach sollte sich bei dir folgender Code ergeben:

Code: Alles auswählen

RewriteEngine On

RewriteCond %&#123;REQUEST_URI&#125; !^/category/
RewriteRule ^&#40;.*&#41;$  http&#58;//www.domain.tld/category/$1 &#91;L&#93;

RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteRule . /index.php &#91;L&#93;

emel
PostRank 9
PostRank 9
Beiträge: 1045
Registriert: 19.12.2007, 10:29

Beitrag von emel » 18.04.2008, 19:37

Code: Alles auswählen

RewriteEngine On
RewriteBase /

RewriteCond %&#123;REQUEST_URI&#125; !^/category/
RewriteRule ^&#40;.*&#41;$  http&#58;//www.domain.tld/category/$1 &#91;L&#93;

RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteRule . /index.php &#91;L&#93;
Habe noch die RewriteBase ergänzt, aber leider immer noch mit internal server error.

Logfile sagt:

Code: Alles auswählen

&#91;Fri Apr 18 20&#58;33&#58;43 2008&#93; &#91;error&#93; &#91;client xx.xx.xxx.xxx&#93; mod_rewrite&#58; maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.
Kann man das evlt. noch etwas besser loggen?

Vielleicht ist auch noch folgendes interessant. Ich habe in meiner apache conf folgende einstellungen auf das DocumentRoot der Domain

Code: Alles auswählen

Options FollowSymLinks -Multiviews
AllowOverride All
Suche / Biete L*nks - PM an mich

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 18.04.2008, 19:47

Hi, kommt leider dadurch zustande, dass mit obigen Regeln z.B. auch die index.php umgeschrieben werden soll.

Wenn ich das richtig sehe, geht es um einen Wordpressblog, bei dem die Pagination falsch verlinkt war und umgeleitet werden soll. Normale Category und Artikel-URLs jedoch nicht.

Dann würde ich vorschlagen:

Code: Alles auswählen

RewriteEngine On
RewriteBase /

RewriteCond %&#123;REQUEST_URI&#125; !^/category/
RewriteRule ^&#40;&#91;a-z0-9-&#93;+&#41;/page/&#40;&#91;0-9&#93;+&#41;$  http&#58;//www.domain.tld/category/$1/page/$2 &#91;L&#93;

RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteRule . /index.php &#91;L&#93;
Derzeit wird dabei angenommen, dass das "theme" nur aus Buchstaben (klein,groß), Zahlen und dem Minus (als Bindestrich) bestehen kann. Denke, dass dies Wordpressstandard ist.

Ist nur im Kopf entwickelt, habe hier gerade keinen Wordpres-Blog parat, um es zu testen.

Edit: kleinen Fehler im Code beseitigt. @ 20:49

emel
PostRank 9
PostRank 9
Beiträge: 1045
Registriert: 19.12.2007, 10:29

Beitrag von emel » 18.04.2008, 20:08

BINGO! Es geht um genau dieses Wordpress-Problem

und zwar habe ich ein Plugin im Einsatz welches mir die /category/ bei normalen Einträgen entfernt. Allerdings laufen nur die page/2 etc. Links ins Leere, für die sowie die feed-Links der Kategorien muss die /category/ wieder in die URL gebracht werden.

Dein Vorschlag löst es aber leider auch nicht. Es gibt auch keinen Eintrag im Error-Log, man muss das Problem doch weiter einkreisen können, oder?
Suche / Biete L*nks - PM an mich

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 18.04.2008, 20:18

Kein Eintrag bedeutet ja, dass die RewriteRule gar nicht "greift", d.h. beim Suchmuster oder durch die RewriteCond gibt es noch einen Fehler.

Da die RewriteCond läuft (siehe Jans Beispiel und deinen Error-Log dazu), versuch mal folgendes:

Code: Alles auswählen

RewriteEngine On
RewriteBase /

RewriteCond %&#123;REQUEST_URI&#125; !^/category/
RewriteRule ^/&#40;&#91;a-z0-9-&#93;+&#41;/page/&#40;&#91;0-9&#93;+&#41;$  http&#58;//www.domain.tld/category/$1/page/$2 &#91;L&#93;

RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteRule . /index.php &#91;L&#93; 
(Es wurde nur ein Slash eingefügt).

Wie sind nochmal die feed-Adressen? Etwa "/category/theme/feed"?

Dann müsste der Code noch so erweitert werden:

Code: Alles auswählen

RewriteEngine On
RewriteBase /

RewriteCond %&#123;REQUEST_URI&#125; !^/category/
RewriteRule ^/&#40;&#91;a-z0-9-&#93;+&#41;/page/&#40;&#91;0-9&#93;+&#41;$  http&#58;//www.domain.tld/category/$1/page/$2 &#91;L&#93;

RewriteCond %&#123;REQUEST_URI&#125; !^/category/
RewriteRule ^/&#40;&#91;a-z0-9-&#93;+&#41;/feed$  http&#58;//www.domain.tld/category/$1/feed &#91;L&#93;

RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteRule . /index.php &#91;L&#93; 

emel
PostRank 9
PostRank 9
Beiträge: 1045
Registriert: 19.12.2007, 10:29

Beitrag von emel » 19.04.2008, 06:29

Leider auch nicht. Ich habe auch das Gefühl das die Regeln gar nicht greifen.
Habe das [L] gegen ein [R] getauscht um die Weiterleitung zu sehen. Da tut sich nichts.

Die erste Regel

Code: Alles auswählen

RewriteRule ^&#40;.*&#41;$ http&#58;//www.domain.tld/category/$1 &#91;L&#93; 
hat vermutlich nur einen internal server error erzeugt, weil alle URL umgeleitet wurden er so in einer Endlosschleife hing.
Komischerweise bekomme ich den Fehler auch wenn ich:


Code: Alles auswählen

RewriteCond %&#123;REQUEST_URI&#125; !^/category/
davor einfüge.

Hmm. Ich denke mal es läuft so: Ich füge mit der RewriteRule ein /category/ ein und das PlugIn welches ich einsetze entfernt es wieder.

d.h. das problem ist vielleicht nur durch das Ändern des Plug-Ins lösbar.
BTW. ich verwende das top level Categories plugin von fortes.com
Suche / Biete L*nks - PM an mich

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag