Estoy usando alojamiento compartido con IIS7 y soporte para PHP. Estoy tratando de ejecutar un blog de wordpress con “urls bonitas” (eliminando index.php). El proveedor de alojamiento no quiere 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 de enlace permanente y se supone que cambiar la página 404 a index.php es el truco… eso tampoco funciona.
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 de alojamiento parece ser compatible con ASP.NET y PHP al mismo tiempo, por lo que creo 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 a seguir? Si algo me lleva en la dirección correcta o si lo descubro yo mismo, estaré más que feliz de compartir el código aquí para cualquier otra persona que lo necesite.
Rob Boek
estoy usando el Reescritor de URL de ManagedFusion y un página de error 404 personalizada en mi Blog.
ManagedFusion Url Rewriter requiere un archivo llamado ManagedFusion.Rewriter.rules que imita .htaccess, tuve que jugar un poco con él para hacerlo bien, así que incluiré lo que tengo actualmente en el mío:
# Managed Fusion Url Rewriter
# http://managedfusion.com/products/url-rewriter/
#
# Developed by: Nick Berardi
# Support: support@managedfusion.com
#
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 www y redirigen varias URL antiguas de un blog anterior.
También tengo un archivo “404.php” que configuré como mi página de error 404 personalizada. Esto no es necesario para las URL bonitas, pero le permitirá usar la página de wordpress 404 en temas personalizados. Aquí están los contenidos:
<?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');
?>
Espero que eso ayude. Ha estado funcionando muy bien para mí hasta ahora.
-Robar
Actualización: acabo de publicar un artículo de blog sobre mi experiencia usando WordPress en IIS7
-
Actualmente estoy esperando para averiguar por qué mi configuración 404 personalizada no funciona, pero una vez que se haya solucionado, intentaré esto. ¡Gracias!
–Andrew Van Slaars
2 de enero de 2009 a las 7:20
Gracias por todas las sugerencias.
Mi host terminó de instalar IIRF Y funcionó como un encanto. Hay un archivo llamado IsapiRewrite4.ini para las reglas de reescritura. Para que mi instalación de WordPress se ejecutara sin index.php en la URL, todo lo que tenía que hacer era agregar:
RewriteRule ^/sitemap.xml$ - [L]
RewriteRule ^/(?!index.php)(?!wp-)(.*)$ /index.php/$1
La primera línea permite solicitudes de un archivo sitemap.xml. La segunda línea maneja la eliminación de index.php de la URL. También parece estar bien desde el punto de vista del rendimiento, no he visto ningún problema con las páginas que responden lentamente.
Esperemos que esto ayude a alguien más que necesite una funcionalidad similar.
Se supone que cambiar la página 404 a index.php es el truco. Si no es así, es posible que el complemento no sea compatible con IIS.
Hay un xml”web.config” archivo en IIS que hace lo que .htaccess hace en Apache HTTPD. (es decir, invalidar la configuración del servidor web mediante un archivo de configuración estático). Es ampliamente utilizado en la aplicación ASP.NET.
Por favor lee Habilitar errores personalizados en WordPress en IIS 7.0
Si esto tampoco funciona, puede intentar pedirle a su proveedor de servicios que lo configure por usted. Pueden configurar esta configuración a través de la GUI de la consola de administración de IIS.