Domanda

Sto utilizzando l'hosting condiviso con IIS7 e il supporto per PHP. Sto cercando di gestire un blog wordpress con " pretty urls " (rimuovendo index.php). Il provider di hosting non desidera installare il modulo URLRewrite, quindi questa opzione non è disponibile per me. Ho trovato un plugin per wordpress che rimuoverà index.php dagli URL di permalink e che la modifica della pagina 404 in index.php dovrebbe fare il trucco ... che non funziona neanche.

Conosco bene la riscrittura degli URL per un sito Web ASP.NET, ma non sono sicuro di come procederei con PHP. La configurazione dell'hosting sembra supportare ASP.NET e PHP allo stesso tempo, quindi sto pensando che sarebbe possibile eseguire il codice di riscrittura tramite ASP.NET, ma non sono sicuro di come procedere.

Qualcuno ha qualche esperienza con questo o qualche idea sul miglior approccio da adottare. Se qualcosa mi porta nella giusta direzione o se lo capisco da solo, sarò più che felice di condividere il codice qui per chiunque ne abbia bisogno.

È stato utile?

Soluzione 2

Grazie a tutti per i suggerimenti.

Il mio host ha finito per installare IIRF e ha funzionato come un fascino. Esiste un file chiamato IsapiRewrite4.ini per le regole di riscrittura. Per far funzionare la mia installazione di Wordpress senza index.php nell'URL, tutto quello che dovevo fare era aggiungere:

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

La prima riga consente le richieste per un file sitemap.xml. La seconda riga gestisce la rimozione di index.php dall'URL. Sembra che vada bene anche dal punto di vista delle prestazioni, non ho riscontrato alcun problema con le pagine che rispondono lentamente.

Speriamo che questo possa aiutare qualcun altro che ha bisogno di funzionalità simili.

Altri suggerimenti

Sto usando il ManagedFusion Url Rewriter e una pagina di errore 404 personalizzata sulla mia blog .

ManagedFusion Url Rewriter richiede un file chiamato ManagedFusion.Rewriter.rules che imita .htaccess, ho dovuto giocarci un po 'per farlo bene, quindi includerò quello che ho attualmente nel mio:

#  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

Le regole gestiscono i graziosi URL, rimuovono il www e reindirizzano diversi vecchi URL da un blog precedente.

Ho anche un file " 404.php " che ho impostato come pagina di errore 404 personalizzata. Questo non è necessario per gli URL graziosi, ma ti permetterà di utilizzare la pagina 404 di wordpress in temi personalizzati. Ecco i contenuti:

<?php
$qs = 

Sto usando il ManagedFusion Url Rewriter e una pagina di errore 404 personalizzata sulla mia blog .

ManagedFusion Url Rewriter richiede un file chiamato ManagedFusion.Rewriter.rules che imita .htaccess, ho dovuto giocarci un po 'per farlo bene, quindi includerò quello che ho attualmente nel mio:

#  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

Le regole gestiscono i graziosi URL, rimuovono il www e reindirizzano diversi vecchi URL da un blog precedente.

Ho anche un file " 404.php " che ho impostato come pagina di errore 404 personalizzata. Questo non è necessario per gli URL graziosi, ma ti permetterà di utilizzare la pagina 404 di wordpress in temi personalizzati. Ecco i contenuti:

<*>

Spero che sia d'aiuto. Finora ha funzionato molto bene per me.

-Rob

Aggiornamento: ho appena pubblicato un articolo di blog sulla mia esperienza con WordPress su IIS7

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

Sto usando il ManagedFusion Url Rewriter e una pagina di errore 404 personalizzata sulla mia blog .

ManagedFusion Url Rewriter richiede un file chiamato ManagedFusion.Rewriter.rules che imita .htaccess, ho dovuto giocarci un po 'per farlo bene, quindi includerò quello che ho attualmente nel mio:

#  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

Le regole gestiscono i graziosi URL, rimuovono il www e reindirizzano diversi vecchi URL da un blog precedente.

Ho anche un file " 404.php " che ho impostato come pagina di errore 404 personalizzata. Questo non è necessario per gli URL graziosi, ma ti permetterà di utilizzare la pagina 404 di wordpress in temi personalizzati. Ecco i contenuti:

<*>

Spero che sia d'aiuto. Finora ha funzionato molto bene per me.

-Rob

Aggiornamento: ho appena pubblicato un articolo di blog sulla mia esperienza con WordPress su IIS7

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

Sto usando il ManagedFusion Url Rewriter e una pagina di errore 404 personalizzata sulla mia blog .

ManagedFusion Url Rewriter richiede un file chiamato ManagedFusion.Rewriter.rules che imita .htaccess, ho dovuto giocarci un po 'per farlo bene, quindi includerò quello che ho attualmente nel mio:

#  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

Le regole gestiscono i graziosi URL, rimuovono il www e reindirizzano diversi vecchi URL da un blog precedente.

Ho anche un file " 404.php " che ho impostato come pagina di errore 404 personalizzata. Questo non è necessario per gli URL graziosi, ma ti permetterà di utilizzare la pagina 404 di wordpress in temi personalizzati. Ecco i contenuti:

<*>

Spero che sia d'aiuto. Finora ha funzionato molto bene per me.

-Rob

Aggiornamento: ho appena pubblicato un articolo di blog sulla mia esperienza con WordPress su IIS7

SERVER['PATH_INFO'] =

Sto usando il ManagedFusion Url Rewriter e una pagina di errore 404 personalizzata sulla mia blog .

ManagedFusion Url Rewriter richiede un file chiamato ManagedFusion.Rewriter.rules che imita .htaccess, ho dovuto giocarci un po 'per farlo bene, quindi includerò quello che ho attualmente nel mio:

#  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

Le regole gestiscono i graziosi URL, rimuovono il www e reindirizzano diversi vecchi URL da un blog precedente.

Ho anche un file " 404.php " che ho impostato come pagina di errore 404 personalizzata. Questo non è necessario per gli URL graziosi, ma ti permetterà di utilizzare la pagina 404 di wordpress in temi personalizzati. Ecco i contenuti:

<*>

Spero che sia d'aiuto. Finora ha funzionato molto bene per me.

-Rob

Aggiornamento: ho appena pubblicato un articolo di blog sulla mia esperienza con WordPress su IIS7

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

Spero che sia d'aiuto. Finora ha funzionato molto bene per me.

-Rob

Aggiornamento: ho appena pubblicato un articolo di blog sulla mia esperienza con WordPress su IIS7

La modifica della pagina 404 in index.php dovrebbe fare il trucco. In caso contrario, il plug-in potrebbe non supportare IIS.

Esiste un xml " web.config " file in IIS che fa ciò che .htaccess fa in HTTPD Apache. (ad es. sovrascrivere le impostazioni del server Web con un file di configurazione statico) È ampiamente utilizzato nell'applicazione ASP.NET.

Leggere Abilita errori personalizzati in WordPress su IIS 7.0 Se neanche questo funziona, puoi provare a chiedere al tuo fornitore di servizi di impostarlo per te. Possono configurare questa impostazione tramite la GUI di IIS Management Console.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top