problemi mod_rewrite utilizzando ISAPI_rewriter su IIS6
-
29-09-2019 - |
Domanda
Spero non IIS gente mi può aiutare su questo anche se il problema che sto avendo è basato su un server IIS6 esecuzione ISAPI_Rewriter.
La situazione è che sto correndo Wordpress su IIS6, ISAPI_Rewriter viene utilizzato per agire come un sostituto per mod_rewrite e sta funzionando correttamente. Il mio problema è che quando ho capito di riscrivere i miei URL per Wordpress (quindi non ho bisogno il nome del file index.php in esso) mostra un 404. Dopo molte ricerche ho trovato il problema era perché parte del ASP.net ( o qualcosa di simile) è stata aggiunta eurl.axd / [stringa casuale] alla fine degli URL e quindi questo veniva alimentato nella richiesta Wordpress e la rottura. Ho impostato il template di Wordpress per emettere l'URL richiesto e sembra qualcosa di simile:
http://www.example.com/index.php /about/eurl.axd/b552863f2d5e9841b5d8b79b44ac02e8/
Credo che questo sia a causa della gerarchia delle varie cose nel sistema IIS ed è necessario il colpevole per eseguire un'altra parte del progetto. Preferirei continuare a utilizzare ISAPI_Rewriter per abbellire gli URL quindi mi piacerebbe sapere questo:
C'è un modo di ottenere mod_rewrite per rimuovere eurl.axd / [stringa] prima di alimentarlo al sistema?
Il mio file .htaccess attualmente appare come tale:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# The following line excludes folders from rewriting
RewriteCond %{REQUEST_URI} !^/folder-name/
RewriteRule ^/(.*)$ /$1 [NC,L]
Grazie per tutto l'aiuto, è sempre molto apprezzato.
EDIT: aver regolato il mio .htaccess sulla base dei suggerimenti e sembra funzionare bene dai test brevi ho svolto. Postato qui sotto.
RewriteEngine on
RewriteBase /
# This is used to strip ASP.net eurl.axd bits
# from the URL so wordpress can use permalinks
# For the root
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteRule ^eurl\.axd/[0-9a-f]+/$ index.php [NC,L]
# For internal permalinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ index.php/$1 [NC,L]
Soluzione
Qualcosa di simile vicino alla parte superiore della vostra lista di riscritture dovrebbe funzionare:
RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ /$1
Altri suggerimenti
Io uso il seguente espressione regolare come prima regola con Ionics Isapi Rewriter per i siti web in esecuzione su ASP.NET 4 su IIS 6 per ovviare ai problemi causati dalla cambiamento rottura introdotto con ASP.NET 4:
RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2
Questo mi permetta di nuovo utilizzo degli URL senza estensione.
Si noti che il secondo gruppo cattura querystring, se presente e restitutes all'URL riscritto.
E sì, è di una caratteristica, non un bug .
mi sono imbattuto in un problema simile con v4.0 ASP.Net estensione meno caratteristica URL su II6 e ha trovato una soluzione attraverso provider di ISAPI Rewrite Module, il non richiede spegnerlo. Theissue e la soluzione come abbiamo sperimentato è documentato qui http://www.vanadiumtech.com/OurBlog/post/2011/08/12/Cause-of-eurlaxd.aspx