Pregunta

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 de enlace permanente y se supone que el cambio de la página 404 a index.php hará 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 del hosting 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 a seguir? Si algo me guía 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 pueda necesitarlo.

¿Fue útil?

Solución 2

Gracias a todos por las sugerencias.

Mi host terminó instalando IIRF y funcionó como un encanto. Hay un archivo llamado IsapiRewrite4.ini para las reglas de reescritura. Para poder ejecutar mi instalación de Wordpress 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 se encarga de eliminar index.php de la URL. También parece estar bien desde el punto de vista de rendimiento, no he visto ningún problema con las páginas que responden lentamente.

Esperamos que esto ayude a alguien que necesite una funcionalidad similar.

Otros consejos

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

El 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 la mía:

#  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 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 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 = 

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

El 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 la mía:

#  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 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 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:

<*>

Espero que ayude. Ha estado funcionando muy bien para mí hasta ahora.

-Rob

Actualización: acabo de publicar un artículo de blog sobre mi experiencia usando WordPress en IIS7

SERVER['QUERY_STRING']; $pos = strrpos($qs, '://'); $pos = strpos($qs, '/', $pos + 4);

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

El 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 la mía:

#  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 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 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:

<*>

Espero que ayude. Ha estado funcionando muy bien para mí hasta ahora.

-Rob

Actualización: acabo de publicar un artículo de blog sobre mi experiencia usando WordPress en IIS7

SERVER['REQUEST_URI'] = substr($qs, $pos);

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

El 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 la mía:

#  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 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 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:

<*>

Espero que ayude. Ha estado funcionando muy bien para mí hasta ahora.

-Rob

Actualización: acabo de publicar un artículo de blog sobre mi experiencia usando WordPress en IIS7

SERVER['PATH_INFO'] =

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

El 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 la mía:

#  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 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 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:

<*>

Espero que ayude. Ha estado funcionando muy bien para mí hasta ahora.

-Rob

Actualización: acabo de publicar un artículo de blog sobre mi experiencia usando WordPress en IIS7

SERVER['REQUEST_URI']; include('index.php'); ?>

Espero que ayude. Ha estado funcionando muy bien para mí hasta ahora.

-Rob

Actualización: acabo de publicar un artículo de blog sobre mi experiencia usando WordPress en IIS7

Se supone que el cambio de la página 404 a index.php hace el truco. Si no lo hace, es posible que el complemento no sea compatible con IIS.

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

Lea 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top