¿Cómo eliminar la extensión de archivo de la dirección del sitio web?
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 abra mi sitio web. En otras palabras, quiero que mi sitio web sea como: http://something.com/profile
Como segundo ejemplo, puede ver la propia dirección del sitio web de StackOverflow.
¿Puede alguien por favor ayudarme ¿en hacer esto? ¡Gracias!
10 answers
Basta con añadir .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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-30 12:45:48
Primero, verifique que el módulo mod_rewrite esté instalado. Luego, tenga cuidado de entender cómo funciona, muchas personas lo entienden al revés.
Usted no oculta urls o extensiones. Lo que haces es crear una NUEVA url que dirija a la antigua, 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 exista. Entonces con mod_rewrite instalado pones esto en .htaccess. Básicamente dice, si la URL solicitada NO es un archivo y NO es un directorio, dirigirlo 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. Quieres hacer esto para que los ANTIGUOS también funcionen - lo que haces es mantener un sistema por el cual la variable es siempre exactamente la misma O crear una tabla de base de datos que correlacione la "URL amigable con SEO" con el id del producto. Un ejemplo podría ser
/ Some-Cool-Video (que equivale a ID de producto asdf)
La ventaja de esto? Los motores de búsqueda indexarán las palabras clave " Some Cool Video."asdf? ¿Quién va a buscar eso?
No puedo darle detalles de cómo programar esto, pero tome la cadena de consulta, quite el final
yoursite.com/Some-Cool-Video
Se convierte en" asdf "
Luego establezca la variable m en este
M = asdf
Así que ambas URL seguirán yendo al mismo producto
yoursite.com/play.php?m=asdf
yoursite.com/Some-Cool-Video
Mod_rewrite puede hacer muchas otras cosas importantes también, búscalo en Google y haz que se active en tu servidor (probablemente ya esté instalado.)
Referencia: http://www.scriptscoop2.com/t/1a0c2b81484d/php-how-to-remove-file-extension-from-website-address.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-11 07:57:47
Tienes diferentes opciones. Uno de ellos es crear una carpeta llamada "perfil" y cambiar el nombre de su "perfil.php" a "por defecto.php "y ponerlo en la carpeta "profile". y usted puede dar órdenes a esta página de esta manera:
Página antigua: 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 para métodos complicados.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-30 12:47:26
El problema de crear un directorio y mantener el índice.php en él es que
- sus enlaces con el menú dejarán de funcionar
- habrá demasiados directorios. Por ejemplo, habrá un directorio separado para todas y cada una de las preguntas aquí en stackoverflow
Las soluciones son 1. MOD REESCRITURA (como se sugirió anteriormente) 2. utilice un código php para incluir dinámicamente otros archivos en el archivo de índice. Lea un poco más sobre esto aquí http://inobscuro.com/tutorials/read/16 /
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-14 07:27:43
Aquí hay una forma simple de PHP que uso.
Si se solicita una página con el .extensión php entonces una nueva petición es hecha sin el .extensión php. El .la extensión php ya no se muestra en el campo de dirección del navegador.
Se me ocurrió esta solución porque ninguno de los muchos .las sugerencias de htaccess funcionaron para mí y fue más rápido implementar esto en PHP que intentar averiguar por qué .htaccess no funcionó en mi servidor.
Ponga esto al principio de cada archivo PHP (preferentemente antes que cualquier otra cosa):
include_once('scripts.php');
strip_php_extension();
Luego coloque estas funciones en los scripts del archivo.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 todavía pueden tener el nombre de archivo completo, es decir, incluyendo el .extensión php.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-15 14:52:38
En realidad, la forma más sencilla de manipular esto es
- Abra una nueva carpeta en su servidor, por ejemplo, "Data"
- Poner índice.php (or index.html) en it
Y luego la URL www.yoursite.com/data leerá ese índice.archivo php. Si quieres ir más lejos, abre una subcarpeta (por ejemplo, "Lista") en ella, pon otro índice.php en esa carpeta y usted puede tener www.yoursite.com/data/list ejecuta ese archivo PHP.
De esta manera usted puede tener control total sobre esto, muy útil para SEO.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-01 13:00:19
Igual que Igor pero debe funcionar sin la línea 2:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-18 10:19:03
Elimina la extensión de un archivo.htaccess
URL original: http://ravinderrathore.herobo.com/contact.php
Regla de Htaccess a eliminar .php, .html, etc. extensión de archivo desde 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]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-17 12:07:32
Tony, tu script está bien, pero si tienes 100 archivos? Necesita agregar este código en todos estos :
Include_once('scripts.php');
strip_php_extension ();
Creo que incluye un menú en cada archivo php (probablemente su menú se muestra en todas sus páginas web), por lo que puede agregar estas 2 líneas de código solo en su archivo de menú. Este trabajo para mí: D
Casi lo mismo con la primera respuesta sobre, pero algo más de ventaja.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Simplemente agregue si tiene otra extensión de archivo en sus sitios
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-28 06:06:10