Pregunta

Utilizo PHP para crear aplicaciones web, pero quiero mis páginas web sin extensión .php en la barra de direcciones del navegador. Para Eample http://www.example.com/index.php shows como http://www.example.com/index En la barra de direcciones del navegador.

¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Pon esto en un archivo llamado .htaccess En tu raíz www:

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

Esto funciona si está ejecutando Apache y tiene activado mod_rewrite.

Otros consejos

Simplemente cree un archivo .htaccess en wamp/www/ y copiar pete este código ..

Options +FollowSymlinks


RewriteEngine On


RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

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

¡Esperar! ¡Esto sería útil para alguien!

Querrás encontrar el método apropiado de para su servidor web. Te permite mapear

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]

Solo para señalar que en las versiones anteriores de IIS, por ejemplo, IIS6 y suponiendo que esté en un proceso de 32 bits, Ionics Isapi Rewrite es un fantástico módulo de reescritura de URL gratuita. Dentro de 64 bits en IIS 6, he encontrado que el producto comercial Helicon ISAPI Rewrite 3 es una gran herramienta. Pero si tiene 32 bits, los Ionics son gratuitos y hace todo lo que necesitará.

http://iirf.codeplex.com/

En apache2.conf tengo

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

Lo que significa data se trata como un archivo PHP sin la extensión

Hay varias formas de hacerlo.

Puede usar mod-reescribir para volver a cablear foo a foo.php para que las solicitudes /bar sean manejadas por /bar.php.

Puede usar directorios y archivos predeterminados, para que se vincule a Direcory /Foo /que se maneja /foo/index.php

Puede establecer un PHP-Script como controlador para 404-errores, luego solo se enlaza a archivos inexistentes, y el archivo de controladores trata con él, como le guste. (Por lo general, usando algún tipo de mapa de URL a PHP-File)

Puede decirle a su servidor web que todas las solicitudes de un cierto servidor web deben ser manejados por PHP.

La primera o segunda solución es la más simple, pero las 2 últimos ofrecen la mejor flexibilidad, y las variantes de la misma es lo que hacen la mayoría de los marcos más grandes.

En los sistemas que utilizan el servidor web de Apache, usaría mod_rewrite.

En versiones más nuevas de IIS, puede usar su versión de Mod_rewrite. En versiones anteriores, debe comprar un complemento.

Artículo de Overflow de Stack

Busque el desbordamiento de la pila y debe encontrar respuestas a las preguntas que ya se hacen.

Aquí está Un tutorial para principiantes para la reescritura de 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>

Inserte este código en su archivo .htaccess en el servidor remoto:

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

Esto reescribirá las URL en la forma en que pretendía.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top