Domanda

Io uso PHP per applicazioni web costruire, ma voglio le mie pagine web senza estensione .php nella barra degli indirizzi del browser. Per eample http://www.example.com/index.php spettacoli come http://www.example.com/index nella barra degli indirizzi del browser.

Come posso fare questo?

È stato utile?

Soluzione

Mettere questo in un file chiamato .htaccess nel vostro WWW-root:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.php

Questo funziona se si sta eseguendo Apache e mod_rewrite hanno attivati.

Altri suggerimenti

basta creare un file .htaccess nella wamp / www / e copia-incolla questo codice ..

Options +FollowSymlinks


RewriteEngine On


RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.+)$ /$1.php [L,QSA]

Speranza! questo sarebbe utile per qualcuno !!

Ti consigliamo di trovare il metodo appropriato di per il server web. Esso consente di mappare

www.domain.com/page

a

www.domain.com/page.php

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

Giusto per sottolineare che su versioni precedenti di IIS, ad esempio IIS6 e supponendo che si sono in un processo a 32 bit quindi IONICS ISAPI Rewrite è un modulo di riscrittura libera url fantastico. All'interno dei 64 bit in IIS 6 ho trovato il prodotto commerciale Helicon ISAPI Rewrite 3 di essere un grande strumento. Ma se siete in 32 bit, IONICS è gratuito e fa tutto quello che sarà necessario.

http://iirf.codeplex.com/

In apache2.conf ho

<Files data>    
 ForceType application/x-httpd-php    
</Files>

Il che significa data viene trattato come un file PHP senza l'estensione

Ci sono diversi modi per farlo.

È possibile utilizzare mod-rewrite di ricablare foo a foo.php in modo che le richieste di / bar diventa gestite da /bar.php.

È possibile utilizzare le directory ei default-file, in modo che si collega al direcory / foo / che viene gestita da /foo/index.php

È possibile impostare uno script PHP come gestore per il 404-errori, poi basta collegare ai file inesistente, e le offerte del gestore-file con esso però che gli piace. (Tipicamente utilizzando una sorta di mappa da url to PHP-file)

È possibile dire al server web che tutte le richieste per un certo server web, deve essere gestito da php.

La prima o la seconda soluzione è la più semplice, ma gli ultimi 2 quelle dà la massima flessibilità, e sue varianti è quello che la maggior parte dei quadri più grandi fanno.

Sui sistemi che utilizzano il server web Apache, si può usare mod_rewrite.

Nelle versioni più recenti di IIS, è possibile utilizzare la loro versione di mod_rewrite. Su versioni precedenti è necessario acquistare un plugin.

Stack Overflow articolo

Ricerca Stack Overflow e si dovrebbe trovare le risposte alle domande già poste.

Ecco un principianti esercitazione per la riscrittura degli URL.

little modification - better to use REQUEST_URI and check for the directory


# Turn mod_rewrite on

RewriteEngine on

# To externally redirect /dir/foo.html to /dir/foo/
RewriteCond %{REQUEST_URI} ^(.+)\.html?$ [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.html
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]

# To externally redirect /dir/foo.html to /dir/foo/
RewriteCond %{REQUEST_URI} ^(.+)\.html?$ [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.html
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Inserisci il codice nel file .htaccess sul server remoto:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Questo riscriverà gli URL nel modo desiderato.

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