Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在url mod_rewrite中隐藏extension.php_Php_Url_Mod Rewrite - Fatal编程技术网

在url mod_rewrite中隐藏extension.php

在url mod_rewrite中隐藏extension.php,php,url,mod-rewrite,Php,Url,Mod Rewrite,我有一个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/em

我有一个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/
为西班牙文版

还有网站里面的链接,也就没有了扩展


例如,链接到
clientes
的图像将是
clientes
而不是
clientes.php
如果有人试图转到
/page.php
,它仍然可以工作,但会重定向到
/page
,htacces文件应该是这样的:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
您可以重定向url中任何同名的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));
}

htacces文件应如下所示:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
您可以重定向url中任何同名的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));
}

请在根目录中装入.htaccess文件并使用此代码

Options +FollowSymlinks

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

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

希望!!这对某人是有用的

请在根目录中装入.htaccess文件并使用此代码

Options +FollowSymlinks

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

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

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

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

希望!!这对某人是有用的

这似乎是重复的可能重复的这似乎是重复的可能重复的这如何重写
/es/index.php
/es/inicio
?它的确定,我要改变index.php到inicio.php,然后重定向name.com/es/,to name.com/es/inicio为什么preg_match中的正则表达式中有美元符号?
$
在正则表达式中,注释输入的结尾。例如:
/\.php/$
匹配
index.php
,但不匹配
index.php5
(因为
php
不是输入的结尾)。更多信息:如何将
/es/index.php
重写为
/es/inicio
?没问题,我将把index.php改为inicio.php,然后将name.com/es/,重定向到name.com/es/inicio为什么preg_匹配中的正则表达式中有美元符号?
$
正则表达式中的注释输入的结尾。例如:
/\.php/$
匹配
index.php
,但不匹配
index.php5
(因为
php
不是输入的结尾)。更多信息:请尝试提供解决方案的说明。请尝试提供解决方案的说明。
RewriteEngine on

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

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