2008-12-30 23 views
6

Estoy usando alojamiento compartido con IIS7 y soporte para PHP. Estoy intentando ejecutar un blog de WordPress con "URL bonitas" (eliminando index.php). El proveedor de alojamiento no desea instalar el módulo URLRewrite, por lo que esa opción no está disponible para mí. Encontré un complemento para WordPress que eliminará el index.php de las URL permanentes y el cambio de la página 404 a index.php se supone que hace el truco ... eso tampoco funciona.Reescritura de URL en IIS7 para Wordpress

Estoy familiarizado con la reescritura de URL para un sitio web ASP.NET, pero no estoy seguro de cómo lo haría para PHP. La configuración del alojamiento parece ser compatible con ASP.NET y PHP al mismo tiempo, así que estoy pensando que sería posible ejecutar el código de reescritura a través de ASP.NET, pero no estoy seguro de cómo hacerlo.

¿Alguien tiene alguna experiencia con esto o alguna idea sobre el mejor enfoque para tomar. Si algo me guía en la dirección correcta o si me lo explico, estaré más que feliz de compartir el código aquí para cualquier otra persona que lo necesite.

Respuesta

4

Gracias a todos por las sugerencias.

Mi host terminó instalando IIRF y funcionó a las mil maravillas. Hay un archivo llamado IsapiRewrite4.ini para las reglas de reescritura. Con el fin de conseguir mi instalación de WordPress en funcionamiento sin el index.php en la URL, todo lo que tenía que hacer era poner:

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

La primera línea permite que las solicitudes de un archivo sitemap.xml.La segunda línea maneja la eliminación de index.php de la URL. Parece estar bien desde el punto de vista del rendimiento, no he visto ningún problema con las páginas que responden lentamente.

Esperamos que esto ayude a alguien más que necesita una funcionalidad similar.

5

estoy usando el ManagedFusion Url Rewriter y una página de error 404 personalizada en mi blog.

El ManagedFusion Url Regrabadora requiere un archivo llamado .htaccess ManagedFusion.Rewriter.rules que imita, que tenía que jugar un rato con él un poco para hacer las cosas bien, así que va a incluir lo que actualmente tengo en la mía:

# 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 

Las reglas manejan las URL bonitas, eliminan el www y redirigen varias URL antiguas de un blog anterior.

También tengo un archivo "404.php" que he configurado como mi página personalizada de error 404. Esto no es necesario para las URL bonitas, pero le permitirá usar la página de wordpress 404 en temas personalizados. Aquí está el contenido:

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

Espero que ayude. Me ha estado yendo muy bien hasta ahora.

-Rob

Actualización: Me acaba de publicar un blog article on my experience using WordPress on IIS7

+0

Actualmente estoy esperando para saber por qué mi configuración 404 personalizada no funciona, pero una vez que se ha solucionado, daré una oportunidad. ¡Gracias! –

0

Cambio de la página 404 a index.php se supone que debe hacer el truco. Si no es así, es posible que el complemento no sea compatible con IIS.

Hay un archivo xml "web.config" en IIS que hace lo que .htaccess hace en Apache HTTPD. (es decir, anular configuración del servidor web por archivo de configuración estático). Es ampliamente utilizado en la aplicación ASP.NET.

Lea Enable custom errors in WordPress on IIS 7.0 Si esto no funciona tampoco, puede intentar pedirle a su proveedor de servicio que lo configure. Pueden configurar esta configuración a través de la IIS Management Console GUI.

Cuestiones relacionadas