Domanda

Sto sviluppando un'app localmente (sotto Nome dominio < miodominio > .dev ).

Per lavorare con URL amichevoli, ho impostato il mio .htaccess in questo modo:

RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Funziona bene. Stranamente, quando vai online, non è così eccezionale:

http://example.com/issue/my-slug/#23 non restituisce alcuna variabile GET. Perché?

È stato utile?

Soluzione

La mia ipotesi, basata sull'esperienza passata è RewriteBase, probabilmente perché sei su un server condiviso o su qualche altra configurazione non standard.

RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Altri suggerimenti

Non lo vedo

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

deve corrispondere a tale URL, ma è l'unico con il flag [R] a eseguire un reindirizzamento esterno. Prova a commentare quella riga, per assicurarti che non vi sia un'altra parte dell'applicazione che esegue il reindirizzamento. La mia ipotesi è che ci sia.

Manca uno spazio tra l'URL di sostituzione e i flag. Puoi anche semplificare la tua prima regola come segue:

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top