Ich habe eine Reihe von RewriteRules in. Htaccess für SEO Zwecke. Beispiel ...Warum bricht ein Bindestrich in einer RewriteRule, wenn ich in einem Unterordner bin
RewriteEngine On
RewriteRule ^signup$ /signup.php
RewriteRule ^account$ /account.php
RewriteRule ^logout$ /logout.php
RewriteRule ^login$ /login.php
RewriteRule ^recent-questions$ /recent.php
RewriteRule ^popular-questions$ /popular.php
...
...
(more similar stuff)
...
...
RewriteRule ^(.*)/([-_~*a-zA-Z0-9]+)\|([0-9]+)(\/)?$ view.php?title=$1&id=$2&%{QUERY_STRING}
RewriteRule ^([-_~*a-zA-Z0-9]+)(\/)?$ categories.php?key=$1
Das System befindet sich in einem Unterordner "ask" auf dem Server.
Sie alle gut funktionieren, wenn ich den Ordner http://ask.mydomain.com
Karte Aber ich will keine Sub-Domain verwenden, da ich das Hinzufügen eines bestehenden Kopf & Fußzeile von anderen Menschen, die Aktie resouces verwaltet und enthält relative Links mit dem Haupt www. Webseite.
Wenn ich versuche, über http://www.mydomain.com/ask auf den Ordner zuzugreifen, führen die RewriteRules mit Bindestrichen in ihnen zu 404 Fehlern - die anderen funktionieren weiter.
Ich habe bereits versucht, die Bindestriche als - und% 2D zu entkommen. Ersteres machte keinen Unterschied. Letzteres bringt mich auf eine völlig falsche Seite.
Die Rewrite-Regeln befinden sich in einem .htaccess im Ordner ask, ohne dass RewriteBase angewendet wurde. Daher wird das lokale Verzeichnis vor der Verarbeitung gelöscht (wie hier dokumentiert: http://httpd.apache.org/docs/2.0 /mod/mod_rewrite.html#rewritebase) Ich habe Ihren Vorschlag trotzdem versucht, mit dem Ergebnis immer noch 404 für die lästigen Links. – rwired
Auch wenn (. *) Nichts entspricht, ist es immer noch eine Gruppe, also sollten $ 2 und $ 3 stimmen. Auf der anderen Seite: Sind Sie sicher, dass zum Zeitpunkt der Anwendung der RewriteRule der String noch einen Schrägstrich vor dem Titel | id hat? Wenn nicht, wird es nicht gefunden. BTW: Beachte, dass ich kein .htaccess-Guru bin, also könnte ich überall falsche Annahmen machen. – balpha