parte - url amigables php
¿Cómo eliminar la extensión de archivo de la dirección del sitio web? (10)
Aquí hay una forma simple de PHP que yo uso.
Si se solicita una página con la extensión .php, se realiza una nueva solicitud sin la extensión .php. La extensión .php ya no se muestra en el campo de dirección del navegador.
Se me ocurrió esta solución porque ninguna de las muchas sugerencias de .htaccess funcionó para mí y fue más rápido implementar esto en PHP que tratar de averiguar por qué .htaccess no funcionaba en mi servidor.
Pon esto al comienzo de cada archivo PHP (preferiblemente antes que nada):
include_once(''scripts.php'');
strip_php_extension();
Luego ponga estas funciones en el archivo ''scripts.php'':
//==== Strip .php extension from requested URI
function strip_php_extension()
{
$uri = $_SERVER[''REQUEST_URI''];
$ext = substr(strrchr($uri, ''.''), 1);
if ($ext == ''php'')
{
$url = substr($uri, 0, strrpos($uri, ''.''));
redirect($url);
}
}
//==== Redirect. Try PHP header redirect, then Java, then http redirect
function redirect($url)
{
if (!headers_sent())
{
/* If headers not yet sent => do php redirect */
header(''Location: ''.$url);
exit;
}
else
{
/* If headers already sent => do javaScript redirect */
echo ''<script type="text/javascript">'';
echo ''window.location.href="''.$url.''";'';
echo ''</script>'';
/* If javaScript is disabled => do html redirect */
echo ''<noscript>'';
echo ''<meta http-equiv="refresh" content="0; url=''.$url.''" />'';
echo ''</noscript>'';
exit;
}
}
Obviamente, todavía necesita configurar Apache para redirigir cualquier solicitud sin extensión al archivo con la extensión. La solución anterior simplemente comprueba si el URI solicitado tiene una extensión, si lo hace, solicita el URI sin la extensión. Luego Apache hace el redireccionamiento al archivo con la extensión, pero solo el URI solicitado (sin la extensión) se muestra en el campo de dirección del navegador. La ventaja es que todos sus enlaces "href" en su código aún pueden tener el nombre de archivo completo, es decir, incluyendo la extensión .php.
Estoy diseñando un sitio web. Quiero que la dirección de mi sitio web se vea como la siguiente imagen:
No quiero que mi sitio web se vea como http://something.com/profile.php . Quiero que la extensión .php
se elimine en la barra de direcciones cuando alguien abre mi sitio web. En otras palabras, quiero que mi sitio web sea como: http://something.com/profile
Como segundo ejemplo, puede consultar la dirección del sitio web de StackOverflow.
¿Puede alguien ayudarme a hacer esto? ¡Gracias!
El problema de crear un directorio y mantener index.php en él es que
- sus enlaces con el menú dejarán de funcionar
- Habrá demasiados directorios. Por ejemplo, habrá un directorio separado para cada pregunta aquí en
Las soluciones son 1. MOD REWRITE (como se sugiere arriba) 2. use un código php para incluir dinámicamente otros archivos en el archivo de índice. Lea un poco más aquí abt http://inobscuro.com/tutorials/read/16/
Eliminar una extensión de archivo a través de .htaccess
URL original: http://ravinderrathore.herobo.com/contact.php
Regla htaccess para eliminar la extensión de archivo .php, .html etc. de url.
RewriteRule ^(.*)$ $1.php
After Rewriting: http://ravinderrathore.herobo.com/contact
RewriteEngine on
RewriteCond %{THE_REQUEST} ^(.+)/.php([#?][^/ ]*)?/ HTTP/
RewriteRule ^index(.*)?$ index.php$1 [L,QSA]
RewriteRule ^login_success(/)?$ login_success.php [L,QSA]
RewriteRule ^contact(/)?$ contact.php [L,QSA]
En realidad, la forma más simple de manipular esto es
- Abra una nueva carpeta en su servidor, por ejemplo, "Datos"
- Coloca index.php (o index.html) en él
Y luego la URL www.yoursite.com/data leerá ese archivo index.php. Si desea llevarlo más lejos, abra una subcarpeta (por ejemplo, "Lista") en él, ponga otro index.php en esa carpeta y podrá hacer que www.yoursite.com/data/list ejecute ese archivo PHP.
De esta manera puede tener un control total sobre esto, muy útil para SEO.
Igor que Igor, pero debería funcionar sin la línea 2:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)$ $1.php [NC,L]
Primero, verifique que el módulo mod_rewrite esté instalado. Luego, tenga cuidado de comprender cómo funciona, muchas personas lo obtienen al revés.
No oculta urls o extensiones. Lo que debes hacer es crear una NUEVA url que dirija a la anterior, por ejemplo
La URL para poner en su sitio web será yoursite.com/play?m=asdf
o mejor aún
yoursite.com/asdf
Aunque el directorio asdf no existe. Luego, con mod_rewrite instalado, póngalo en .htaccess. Básicamente dice, si la URL solicitada NO es un archivo y NO es un directorio, dirígelo a mi script:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /play.php [L]
Casi terminado: ahora solo tiene que escribir algunas cosas en su script PHP para analizar la nueva URL. Desea hacer esto para que los ANTIGUOS funcionen también; lo que usted hace es mantener un sistema por el cual la variable sea siempre la misma O cree una tabla de base de datos que relacione la "URL amigable con SEO" con la identificación del producto. Un ejemplo podría ser
/ Some-Cool-Video (que equivale al ID de producto asdf)
La ventaja de esto? Los motores de búsqueda indexarán las palabras clave "Some Cool Video". asdf? ¿Quién buscará eso?
No puedo darle detalles sobre cómo programar esto, pero tome la cadena de consulta, despoje al final
yoursite.com/Some-Cool-Video
se convierte en "asdf"
A continuación, establezca la variable m en este
m = asdf
Por lo tanto, ambas URL seguirán siendo para el mismo producto
yoursite.com/play.php?m=asdf
yoursite.com/Some-Cool-Video
mod_rewrite también puede hacer muchas otras cosas importantes, buscar en Google y activarlo en tu servidor (probablemente ya esté instalado).
Referencia: http://www.scriptscoop2.com/t/1a0c2b81484d/php-how-to-remove-file-extension-from-website-address.html
Simplemente agregue el archivo .htaccess a la carpeta raíz de su sitio (por ejemplo, /home/domains/domain.com/htdocs/) con el siguiente contenido:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}/.php -f
RewriteRule ^(.*)$ $1.php
Tienes diferentes opciones. Una de ellas es crear una carpeta llamada "perfil" y renombrar su "profile.php" a "default.php" y ponerlo en la carpeta "perfil". y puede dar órdenes a esta página de esta manera:
Página anterior: http://something.com/profile.php?id=a&abc=1
Nueva página: http://something.com/profile/?id=a&abc=1
Si no está satisfecho, deje un comentario sobre los métodos complicados.
Tony, tu guión está bien, pero si tienes 100 archivos? Necesita agregar este código en todo esto:
include_once (''scripts.php'');
strip_php_extension ();
Creo que incluyes un menú en cada archivo php (probablemente tu menú se muestre en todas tus páginas web), por lo que puedes agregar estas 2 líneas de código solo en tu archivo de menú. Este trabajo para mí: D
casi lo mismo con la primera respuesta, pero con alguna ventaja adicional.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}/.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME}/.php -f
RewriteRule ^(.*)$ $1.php
Solo agregue si tiene otra extensión de archivo en sus sitios