Domanda

Devo impostare alcune RewriteRules per reindirizzare un URL che contiene uno spazio. Ho provato questo:

RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]

... ma non funziona. Se si inserisce uno spazio anziché% 20, viene generato un errore del server interno 500. Come faccio ad aggiungere uno spazio?

È stato utile?

Soluzione

Prova a mettere un \ davanti al tuo spazio per evitarlo.

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]

Altri suggerimenti

Puoi semplicemente sfuggire allo spazio con un \

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]

Se vuoi evitare la complessità della fuga da ogni spazio (ad es. se prevedi di generare automaticamente questo file), puoi semplicemente usare le virgolette:

RewriteRule "^article/with spaces.html
RewriteRule "^article/with spaces.html<*>quot; "/article/without_spaces.html" [R=301,L]
quot; /article/without_spaces.html [R=301,L]

Inoltre, queste citazioni possono essere utilizzate per racchiudere qualsiasi argomento atteso:

<*>
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]

La prima opzione sostituisce uno spazio mentre la seconda sostituisce% 20 nell'URL codificato.

Ah, ho trovato una soluzione: usa lo stile regex per mostrare uno spazio:

RewriteRule ^article/with\sspaces.html$ ...

Tuttavia, sospetto che questo corrisponderebbe anche a tutti gli altri caratteri degli spazi bianchi (schede, ecc.), ma non credo che sarà un grosso problema.

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