URL-Umschreibung auf IIS7 für WordPress

Lesezeit: 4 Minuten

Ich verwende Shared Hosting mit IIS7 und Unterstützung für PHP. Ich versuche, einen WordPress-Blog mit “hübschen URLs” zu betreiben (index.php entfernen). Der Hosting-Provider 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 die index.php aus Permalink-URLs entfernt und das Ändern der 404-Seite in index.php soll den Trick machen … das funktioniert auch nicht.

Ich bin mit dem Umschreiben von URLs für eine ASP.NET-Website vertraut, aber ich bin mir nicht sicher, wie ich es für PHP machen würde. Das Hosting-Setup scheint ASP.NET und PHP gleichzeitig zu unterstützen, daher denke ich, dass es möglich wäre, den Rewrite-Code über ASP.NET auszuführen, aber ich bin mir nicht sicher, wie ich vorgehen soll.

Hat jemand Erfahrung damit oder eine Idee, wie man am besten vorgeht? Wenn mich irgendetwas in die richtige Richtung führt oder wenn ich es selbst herausfinde, teile ich den Code hier gerne mit anderen, die ihn benötigen.

Benutzer-Avatar
Rob Boek

Ich benutze die ManagedFusion-URL-Rewriter und ein benutzerdefinierte 404-Fehlerseite auf meinem bloggen.

Der ManagedFusion Url Rewriter benötigt eine Datei namens ManagedFusion.Rewriter.rules, die .htaccess nachahmt, ich musste ziemlich viel damit herumspielen, um es richtig hinzubekommen, also werde ich das einschließen, was ich derzeit in meinem habe:

#  Managed Fusion Url Rewriter
#  http://managedfusion.com/products/url-rewriter/
#
#  Developed by: Nick Berardi
#       Support: [email protected]
#
RewriteEngine on

#
# Place Rules Below
#

# misc WordPress rewrites
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]

# deny access to evil robots site rippers offline browsers and other nasty scum
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]

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


# redirect old urls
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]

# rewrite all nonexistent files and directories to use index.php for WordPress
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php$1

Die Regeln behandeln die hübschen 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 ist für die hübschen URLs nicht erforderlich, ermöglicht es Ihnen jedoch, die WordPress 404-Seite in benutzerdefinierten Themen zu verwenden. Hier sind die Inhalte:

<?php
$qs = $_SERVER['QUERY_STRING'];
$pos = strrpos($qs, '://');
$pos = strpos($qs, "https://stackoverflow.com/", $pos + 4);
$_SERVER['REQUEST_URI'] = substr($qs, $pos);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>

Ich hoffe das hilft. Bei mir hat es bisher sehr gut funktioniert.

-Rauben

Update: Ich habe gerade eine gepostet Blog-Artikel über meine Erfahrung mit WordPress auf IIS7

  • Ich warte derzeit darauf, herauszufinden, warum meine benutzerdefinierten 404-Einstellungen nicht funktionieren, aber sobald es behoben ist, werde ich es versuchen. Vielen Dank!

    – Andrew Van Slaars

    2. Januar 2009 um 7:20 Uhr

Vielen Dank an alle für die Vorschläge.

Mein Host endete mit der Installation IIRF und es funktionierte wie ein Zauber. Es gibt eine Datei namens IsapiRewrite4.ini für die Rewrite-Regeln. Um meine WordPress-Installation ohne die index.php in der URL zum Laufen zu bringen, musste ich nur Folgendes hinzufügen:

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

Die erste Zeile erlaubt Anfragen nach einer sitemap.xml-Datei. Die zweite Zeile behandelt das Entfernen von index.php aus der URL. Es scheint auch vom Leistungsstandpunkt aus in Ordnung zu sein, ich habe überhaupt keine Probleme mit langsam reagierenden Seiten gesehen.

Hoffentlich hilft dies jemand anderem, der ähnliche Funktionen benötigt.

Das Ändern der 404-Seite in index.php soll den Zweck erfüllen. Wenn dies nicht der Fall ist, unterstützt das Plugin IIS möglicherweise nicht.

Es gibt eine XML-Datei “web.config“-Datei in IIS, die das tut, was .htaccess in Apache HTTPD tut (dh Webservereinstellung durch statische Konfigurationsdatei überschreiben). Sie wird häufig in ASP.NET-Anwendungen verwendet.

Lesen Sie bitte Aktivieren Sie benutzerdefinierte Fehler in WordPress auf IIS 7.0
Wenn dies auch nicht funktioniert, können Sie versuchen, Ihren Dienstanbieter zu bitten, dies für Sie einzustellen. Sie können diese Einstellung über die GUI der IIS-Verwaltungskonsole konfigurieren.

1372750cookie-checkURL-Umschreibung auf IIS7 für WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy