2016-09-15 39 views
1

私はかなり長い間、これについて私の頭を壊してきましたが、私は解決策が表示されません。htaccessを使用して特定のURLを書き換える方法

GET言語パラメータを持つURLをよりクリーンなURLに書き換えたいとします。例えば

  • http://www.example.com?lang=en

ニーズがなければ:上記のこの書き換えルールで正常に動作します

  • http://www.example.com/en

RewriteRule ^(en|nl|fr|de)/?$ /?lang=$1 [L] 

しかし、私はそれはこれらのようなURLで動作させることはできません。

する必要が
  • http://www.example.com/contact.php?lang=en
  • http://www.example.com/about.php?lang=en

  • http://www.example.com/en/contact.php
  • http://www.example.com/en/about.php

誰もが、私はこの仕事をするために私の書き換えルールに欠けている何のアイデアを持っていますか?

答えて

2

あなたは/en/about.phpを処理するための追加的な書き換えルールが必要になります。

RewriteEngine On 

RewriteRule ^(en|nl|fr|de)/([\w-]+\.php)$ $2?lang=$1 [L,QSA] 

RewriteRule ^(en|nl|fr|de)/?$ /?lang=$1 [L,QSA] 
+0

Thxを、することができます故障最初の書き換えルールをし、それが何を説明しますか?本当にクリーンなURLを使用して正しいページを返しますが、サーバーは/scripts/jquery.jsの代わりに/nl/scripts/jquery.jsを検索するため、スクリプトとCSSファイルを見つけることができません。ティア! – N0lf

+0

最初のルールは、 '$ 1'にある言語の1つと一致&捕捉します。さらに、 '/'の後に '[\ w - ] + \。php'式を使って' $ 2'の 'about.php'を取得します。 'about.php?lang = en'に転送するには、' $ 2?lang = $ 1'を使用します。 – anubhava

+0

css/jsの問題を修正するには、ページのHTMLの ''セクションのすぐ下にこれを追加する必要があります。 href = "/" /> ' – anubhava

関連する問題