6 Stimmen

URL-Umschreibung auf IIS7 für Wordpress

Ich benutze Shared Hosting mit IIS7 und Unterstützung für PHP. Ich versuche, einen Wordpress-Blog mit "schönen URLs" (Entfernen von index.php) zu betreiben. Der Hosting-Anbieter möchte das URLRewrite-Modul nicht installieren, daher steht mir diese Option nicht zur Verfügung. Ich habe ein Plugin für Wordpress gefunden, das das Entfernen von index.php aus Permalink-URLs ermöglicht, und die Änderung der 404-Seite zu index.php soll den Trick machen... das funktioniert auch nicht.

Ich kenne mich mit URL-Umschreibungen für eine ASP.NET-Website aus, bin mir aber nicht sicher, wie ich das für PHP umsetzen soll. Die Hosting-Umgebung scheint gleichzeitig ASP.NET und PHP zu unterstützen, daher denke ich, dass es möglich wäre, den Umleitung-Code über ASP.NET auszuführen, weiß aber nicht, wie ich vorgehen soll.

Hat jemand Erfahrung damit oder Ideen zum besten Vorgehen? Wenn mich etwas in die richtige Richtung führt oder wenn ich es selbst herausfinde, werde ich gerne den Code hier teilen, für alle, die ihn möglicherweise benötigen.

5voto

Rob Boek Punkte 1938

Ich benutze den ManagedFusion Url Rewriter und eine benutzerdefinierte 404 Fehlerseite auf meinem Blog.

Der ManagedFusion Url Rewriter erfordert eine Datei namens ManagedFusion.Rewriter.rules, die .htaccess nachahmt. Ich musste ein wenig damit herumspielen, um es richtig zu bekommen, also werde ich hier meinen aktuellen Code teilen:

#  Managed Fusion Url Rewriter
#  http://managedfusion.com/products/url-rewriter/
#
#  Entwickelt von: Nick Berardi
#       Support: support@managedfusion.com
#
RewriteEngine on

#
# Regeln hier platzieren
#

# diverse WordPress Umleitungen
RewriteRule ^/wp-login\.php$ /wp-login.php [L]
RewriteRule ^/wp-comments-post\.php$ /wp-comments-post.php [L]
RewriteRule ^/wp-admin/(.*)$ /wp-admin/$1 [L]

# Zugriff für unerwünschte Robots, Site Ripper, Offline-Browser und anderen Schmutz verwehren
RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [OR]
RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]

# www entfernen
RewriteCond %{HTTP_HOST} ^www\.robboek\.com$ [NC]
RewriteRule ^(.*)$ http://robboek.com$1 [R=301]

# alte URLs umleiten
RewriteRule ^/2008/12/blog-on-hold.html$ /2008/12/12/blog-on-hold/ [R=301]
RewriteRule ^/2008/11/google-chrome-wont-start-in-vista-x64\.html$ /2008/11/16/google-chrome-wont-start-in-vista-x64/ [R=301]
RewriteRule ^/2008/11/pass-community-summit-2008-events.html$ /2008/11/14/pass-community-summit-2008-events-calendar/ [R=301]
RewriteRule ^/2008/11/fort-stevens-camping-trip.html$ /2008/11/14/fort-stevens-camping-trip/ [R=301]
RewriteRule ^/2008/10/first-post.html$ /2008/10/10/first-post/ [R=301]
RewriteRule ^/blog/CommentView,guid,1d8cba50-0814-4c89-86df-eca669973e8e.aspx$ /2006/09/29/junctions-in-windows-vista/ [R=301]
RewriteRule ^/blog/2006/09/29/JunctionsInWindowsVista.aspx$ /2006/09/29/junctions-in-windows-vista/ [R=301]

# Alle nicht existierenden Dateien und Verzeichnisse auf index.php für WordPress umleiten
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php$1

Die Regeln kümmern sich um die schönen URLs, entfernen das www und leiten mehrere alte URLs von einem früheren Blog um.

Ich habe auch eine Datei "404.php", die ich als meine benutzerdefinierte 404 Fehlerseite eingerichtet habe. Dies wird nicht für die schönen URLs benötigt, erlaubt jedoch die Verwendung der WordPress 404-Seite in benutzerdefinierten Themes. Hier ist der Inhalt:

Ich hoffe, das hilft. Bisher hat es bei mir sehr gut funktioniert.

-Rob

Aktualisierung: Ich habe gerade einen Blog-Artikel über meine Erfahrungen mit der Verwendung von WordPress auf IIS7 veröffentlicht.

4voto

Andrew Van Slaars Punkte 1816

Vielen Dank für alle Vorschläge.

Mein Host hat schließlich IIRF installiert und es hat einwandfrei funktioniert. Es gibt eine Datei namens IsapiRewrite4.ini für die Umleitungsregeln. Um meine Wordpress-Installation zum Laufen zu bringen, ohne das index.php in der URL zu haben, musste ich einfach folgendes hinzufügen:

RewriteRule ^/sitemap.xml$   - [L]
RewriteRule ^/(?!index.php)(?!wp-)(.*)$ /index.php/$1

Die erste Zeile erlaubt Anfragen für eine sitemap.xml-Datei. Die zweite Zeile kümmert sich darum, index.php aus der URL zu entfernen. Es scheint auch in Bezug auf die Leistung in Ordnung zu sein, ich habe keine Probleme mit langsam reagierenden Seiten bemerkt.

Hoffentlich wird das jemand anderem helfen, der eine ähnliche Funktionalität benötigt.

0voto

Dennis C Punkte 23918

Das Ändern der 404-Seite in index.php soll den Trick machen. Wenn nicht, unterstützt das Plugin möglicherweise IIS nicht.

Es gibt eine XML-Datei "web.config" in IIS, die das macht, was .htaccess in Apache HTTPD macht. (d.h. Überschreiben von Webservereinstellungen durch statische Konfigurationsdatei). Es wird weit verbreitet in ASP.NET-Anwendungen verwendet.

Bitte lesen Sie Aktivieren von benutzerdefinierten Fehlern in WordPress auf IIS 7.0. Wenn auch das nicht funktioniert, können Sie Ihren Dienstanbieter bitten, es für Sie einzurichten. Sie können diese Einstellung über die IIS Management Console GUI konfigurieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X