2014-02-17 6 views
5

Ich habe Links wie diese - http://example.com/index.php?q=about und ich möchte sie so aussehen lassen - http://example.com/aboutHHVM - Rewrite Regeln für saubere URLS

Zur Zeit habe ich die Umschreibenregeln bin mit

VirtualHost { 
    * { 
    Pattern = .* 
    RewriteRules { 
     dirindex { 
     pattern = (.*)/$ 
     to = index.php/$1 
     qsa = true 
     } 
    } 
    } 
} 

Wenn ich http://example.com/about besuchen Ich bekomme ein 404 File Not Found

Ich mache das für Drupal. Richtlinien für saubere URLs: https://drupal.org/getting-started/clean-urls

+0

Ich habe eine Antwort auf dieses Problem geschrieben (das ich manuell getestet habe und funktioniert). Wenn es Ihr Problem löst, wählen Sie es bitte als Antwort aus, und wenn nicht, erläutern Sie das Problem bitte weiter. – Sina

Antwort

1

Das Problem kann mit dem VirtualHost gelöst werden, aber das Servermodul von HHVM ist jetzt abgeschrieben, und Sie werden aufgefordert, fastcgi über Apache/Nginx zu verwenden. Ich werde eine Antwort für VirtualHost geben, kann aber bei Bedarf mit einer Nginx-Alternative aktualisieren.

Erstens, stellen Sie sicher, dass Ihre SourceRoot korrekt ist:

Server { 
    Port = 9000 
    SourceRoot = /home/myuser/www 
    DefaultDocument = index.php 
} 

nun für die Regel, sollte dies möglicherweise arbeiten:

VirtualHost { 
    * { 
    Pattern = .* 
    RewriteRules { 
     * { 
     pattern = (.*)$ 
     to = index.php/$1 
     qsa = true 
     } 
    } 
    } 
} 

Wenn Sie die Abfrage wollen genau arbeiten, wie Sie sind mit der Absicht, das innere Muster durch dieses zu ersetzen:

* { 
pattern = /(.*) 
to = index.php?q=$1 
qsa = true 
} 

Ich habe diese beiden getestet, und sie wo Gut. Wenn das Problem weiterhin besteht, liegt möglicherweise das Problem bei Ihrer Einrichtung. Stellen Sie sicher, dass Sie Error and Access logging aktivieren.