php - 在 url mod_rewrite 中隐藏扩展名 .php

我有一个 PHP 网站,我想隐藏扩展程序。我通过谷歌找到了一些东西,但它们似乎都太复杂了,或者它们将 index 重定向到 index.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

/en/文件夹为英文版,/es/文件夹为西类牙文版/p>

还有网站内的链接,也没有扩展名。

例如,链接到 clientes 的图像将是 clientes 而不是 clientes.php and 如果有人尝试访问 /page.php,它仍然有效,但会重定向到 /page

最佳答案

htacces 文件应如下所示:

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

您在没有“php”的情况下重定向 url 中具有相同名称的任何 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));
}

https://stackoverflow.com/questions/6241408/

相关文章:

c# - 如何访问 foreach 之外的变量 (C#)

css - 带有 CSS float div 的多行

qt - PyQt - 如何导入 .qss 文件?

php - 如何确定哪些脚本正在使用 fopen?

asp.net - ObjectDataSource 没有要插入的值

php - 在 PHP5 的 _destruct 中自动取消设置所有类变量

sql - 是否可以用简单的汇编语言处理器级代码编写 SQL 语句?

database-design - 事务处理 : How are simultaneous tran

regex - 从编号列表中删除数字和分隔符

sql-server - 为什么我的 SQL Server 标识值被重用?