2011-06-05 158 views
1

我在PHP有一个网站,我试图隐藏扩展名。我通过谷歌发现了几件事情,但它们似乎都太复杂了,或者他们将index重定向到index.php:就像你写name.com/contact它会去name.com/contact.php一样。我不想说,我只是想:在url中隐藏扩展名.php mod_rewrite

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/文件夹是西班牙语版本

而且网站中的链接,也将是没有延长。

E.g,挂clientesclientes,而不是clientes.php如果有人试图去/page.php,它仍然有效,但它重定向到/page的图像。

+0

这似乎是http://stackoverflow.com/questions/183921/rewrite-all-queries-to-not-need-the-php-extension-using-a-mod-rewrite的副本-rewriterul – 2011-06-05 06:44:57

+0

可能重复的[重定向* .php清洁URL](http://stackoverflow.com/questions/2267488/redirect-php-to-clean-url) – outis 2012-04-29 05:11:19

回答

7

的htacces文件应该是这样的:

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

您重定向在具有相同名称的URL withouth的的 “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)); 
} 
+0

这是如何重写'/es/index.php '到'/ es/inicio'? – Johnsyweb 2011-06-05 06:53:05

+0

好吧,即时将index.php更改为inicio.php,然后将name.com/es/重定向到name.com/es/inicio – Gmo 2011-06-05 07:00:43

+0

为什么preg_match中的正则表达式中有美元符号? – vijrox 2013-05-22 03:47:28

0

请箱一个的.htaccess文件在根目录下的使用此代码!

Options +FollowSymlinks 

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{REQUEST_FILENAME}.php -f 

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

希望!!这对某个人会有用!

0
RewriteEngine on 

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

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

请尝试提供您的解决方案的描述。 – 2013-06-11 06:42:57