Domanda

Ecco il mio file .htaccess

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule subpage\?sid /index.php [R=301,L,NC]

La mia richiesta è http://example.com/subpage?sid

Continua a restituire 404 Not Found, piuttosto che reindirizzare a index.php

Ho provato a non sfuggire al? e cambiando la richiesta in http://example.com/subpage\?sid

Ho provato un sacco di cose per provare a farlo funzionare, ma ora sono sconcertato.

È stato utile?

Soluzione

QUERY_STRING non fa parte dell'URI. Dalla documentazione per RewriteRule :

  

Nota: stringa di query

     

Il Pattern non verrà confrontato con la stringa di query. Invece, devi usare un RewriteCond con la variabile % {QUERY_STRING} .

Come dice il documento, dovrai usare un RewriteCond, qualcosa come:

RewriteCond %{QUERY_STRING} (^|&)sid([&=]|$) [NC]
RewriteRule ^/?subpage /index.php [R=301,L,NC]

Se% {QUERY_STRING} non è davvero un'opzione, prova:

# Apache is supposed to use PCRE, but doesn't seem to like "\\s"
RewriteCond %{THE_REQUEST} subpage?sid[^!-~] [NC]
RewriteRule ^/?subpage /index.php [R=301,L,NC]

Inoltre, non hai quasi mai bisogno di RewriteBase mentre lo stai utilizzando (" RewriteBase / "). Commenta la riga e testala per essere sicuro, ma probabilmente scoprirai che puoi eliminarla senza alcun effetto negativo.

Altri suggerimenti

Forse devi controllare l'impostazione VirtualHost per il tuo sito e configurare l'impostazione AllowOverride per la directory corrispondente?

<Directory /var/www/vhosts/some_host>
     ....
     AllowOverride All
</Directory>

Altre informazioni su AllowOverride

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