在url mod_rewrite中隐藏extension.php
我有一个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
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]