2016-08-26 7 views
2

私はPHPのウェブサイトを持っています。私はPHPのページ名をSEOにやさしいページ名に変換したい。 まず、私はホームページを変換したい、私は "インデックス"の言及を削除したい。多言語サイトとして、ホームページの英語版とフランス語版があります。ホームページのhtaccess書き換えルールが機能しません

私がしたい:

www.abc.com/index.php?lang=fr 

www.abc.com/fr/ 

になるためにしかし、その後、私は他のページには、例えば、自分の名前を維持したい: 私が欲しい:

www.abc.com/links.php?lang=fr 

www.abc.com/fr/links/ 

また、後ろにスラッシュを入れずにURLを使用したい場合もあります。 ので、この:

www.abc.com/fr/links 

この同じページを与える必要があります:

www.abc.com/fr/links/ 

と、この:

www.abc.com/fr/ 

www.abc.com/fr 

は、この同じページを与える必要があります

内容これまでのhtaccessファイルの内容は以下の通りです。 リンクページを正しく変更することができますが、上記で説明した方法でインデックスページの作成方法を理解することはできません(さらに、下のコードは非常に悪い可能性があります。 htaccessファイルにその批判に戻って持っていない、私は主に

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.+)/index(/*)$ index.php?lang=$1 [L] 
RewriteRule ^(.+)/links(/*)$ links.php?lang=$1 [L] 
+2

'RewriteRule ^(。*)$ index.php?lang = $ 1 [L、QSA]'のようなもの – devpro

答えて

0

)...これまでの当て推量で進んだ私は、URLが一致しているかについてのより多くのコントロールを持つことが明示的に許可の言語に一致します。

あなたが許可され、「FR」と「EN」を持っていた場合、それは次のように動作するはずです:

RewriteEngine On 

# Rewrite /fr/links and /fr/links/ to links.php?lang=fr 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(en|fr)/(.+)(/?)$ $2.php?lang=$1 [L] 

# Rewrite /fr and /fr/ to index.php?lang=fr 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(en|fr)(/?)$ index.php?lang=$1 [L] 

これは動作するはずですが、私はむしろ、実際の実装に別のルートを行くだろう。私は、単一のindex.phpファイルへのすべての要求をリダイレクトし、そこにマッチするルートを行い、クリーンでシンプルなあなたの.htaccessを保持しているでしょう:

RewriteEngine On 

# Rewrite everything not existing to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule .* index.php [L] 

そして、index.phpを解析言語やページにして、適切に含んを行います。

+0

あなたが今提案した最初の解決方法を使用しました。しかし、www.abc.com/enやwww.abc.com/en/が索引ページを十分に公平に作成しているので、どのように動作するのか分かりませんが、書き換えルールではwww.abcを有効にできます。 comのインデックスページを表示するには? – user2380468

+0

それは含まれていない、私は質問でそれを見ていない。しかし今、私は再び読んで、古いURLのリダイレクトもしたいと思っていますか?誰かがwww.abc.comに入ると、どの言語を選ぶべきですか? –

関連する問題