在url mod_rewrite中隐藏扩展名.php

Gmo*_*Gmo 1 php url mod-rewrite

我有一个PHP网站,我试图隐藏扩展名.我发现一对夫妇的事情通过谷歌,但他们似乎都过于复杂,或者它们会重定向indexindex.php:就像你写name.com/contact它去name.com/contact.php.我不想要那个,我只想要:

    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
Run Code Online (Sandbox Code Playgroud)

/en/文件夹是英文版,/es/文件夹是西班牙文版

此外,网站内的链接也没有扩展名.

例如,链接到的图像clientesclientes clientes.php ,如果有人试图去/page.php,它仍然有效,但它重定向到/page.

gio*_*_13 7

htacces文件应如下所示:

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

您可以使用相同的名称重定向网址中的任何php文件,而无需"php".
然后在你的php文件中,你可以查看url是否包含扩展名(http://blabla.com/bla .php)并将页面重定向到同一个没有扩展名的页面.
所以,在每个php文件的开头你应该调用这个函数:

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