简体   繁体   中英

hide extension .php in url mod_rewrite

I have a website in PHP, and I'm trying to hide the extension. I've found a couple of things via Google, but they all seem to be too complicated, or they redirect index to index.php : like if you write name.com/contact it goes to name.com/contact.php . I don't want that, I just want:

    www.name.com/es/index.php       to be www.name.com/es/inicio
    www.name.com/es/empresa.php     to be www.name.com/es/empresa
    www.name.com/es/productos.php   to be www.name.com/es/productos
    www.name.com/es/clientes.php    to be www.name.com/es/clientes
    www.name.com/es/recetas.php     to be www.name.com/es/recetas
    www.name.com/es/contacto.php    to be www.name.com/es/contacto

    www.name.com/en/index.php       to be www.name.com/en/home
    www.name.com/en/company.php     to be www.name.com/en/company
    www.name.com/en/products.php    to be www.name.com/en/products
    www.name.com/en/clients.php     to be www.name.com/en/clients
    www.name.com/en/recepis.php     to be www.name.com/en/recepis
    www.name.com/en/contact.php     to be www.name.com/en/contact

the /en/ folder is English version and the /es/ folder is the Spanish version

Also the links inside the website, would be also without the extension.

Eg, an image linked to clientes would be clientes and not clientes.php and if somebody tries to go to /page.php , it still works but it redirects to /page .

The htacces file should look like this:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

You redirect any php file in the url with the same name withouth the "php".
Then in your php files, you can check to see if the url contains the extension (http://blabla.com/bla ) and redirect the page to the same one withouth the extension.是否包含扩展名(http://blabla.com/bla.php)并重定向到没有扩展名的同一页面。
So, at the beginning of each php file you should call this function:

function redirectIfNeeded(){
    $url = $_SERVER["REQUEST_URI"];
    if(preg_match("/\.php/$", $url))
        header("Location: ".preg_replace("/\.php/",$url));
}

Please crate a .htaccess file in root directory an use this code!!

Options +FollowSymlinks

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

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

Hope!! it would be useful for someone!

RewriteEngine on

Rewritecond %{REQUEST_URI} !-f Rewritecond %{REQUEST_URI} !-d Rewritecond %{REQUEST_URI} !-l RewriteRule ^([\w\d-]+)$ $1.php [L]

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM