2011-06-05 31 views
1

私はPHPでウェブサイトを持っており、その拡張子を隠そうとしています。私はGoogleを介していくつかのことを見つけましたが、すべて複雑すぎるようです。indexindex.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/フォルダがスペイン語版

また、ウェブサイト内のリンクで、また次のようになります。私は、私はちょうど欲しい、という必要はありません拡張子なし。

例えば、clientesにリンクされた画像は、誰かが/page.phpに行くしようとすると、それはまだ動作しますが、それは/pageにリダイレクトclientesなくclientes.phpだろう。

+0

これはhttp://stackoverflow.com/questions/183921/rewrite-all-queries-to-not-need-the-php-extension-using-a-mod-rewriteと重複して表示されます-rewriterul –

+0

[Redirect * .php to clean URL]の重複可能性があります(http://stackoverflow.com/questions/2267488/redirect-php-to-clean-url) – outis

答えて

7

htaccesファイルは次のようになります。あなたは、「PHP」withouth同じ名前のURL内の任意のPHPファイルをリダイレクト

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.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

+0

ok、imはindex.phpをinicio.phpに変更し、name.com/es/をname.com/es/inicioにリダイレクトしよう – Gmo

+0

なぜpreg_matchの正規表現にドル記号がありますか? – vijrox

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

解決策の説明をお送りください。 –

関連する問題