2011-06-05 196 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