2016-07-27 27 views
1

Apacheサーバーでmod_rewriteを使用してURLを書き換えたいとします。上記URLのGER、int型の場合はmywebsite.com/gerintsb/Htaccess URL書き換えエラー

にmywebsite.com/web/ger/int/sb/index.html -

は具体的に私は、次の形式のURLを書き換えたいです、sbは一緒に付加されて短いURLを形成します。私は短縮されるべき多くのURLを持っています。

私は

RewriteRule ^([a-z]+)([a-z]+)([a-z]+)$ web/$1/$2/$3/index.html [NC,L] 

私のサーバ - で「ウェブ」フォルダの中に私の.htaccessファイルに次ののRewriteRuleを使用しかし、私のルールが機能していません。私はエラーが見つかりませんオブジェクトを取得しています。

誰かがトラブルシューティングを行うことはできますか?

+0

をあなたはこれが唯一たいですか書き換えられるURL、またはそのようなURLが多数ありますか? –

+0

私は多くのそのようなURLを持っています。 web/fr/int/mp、web/ger/int/rt ...などのようなものです。私は質問を編集してより明確にしています:) – Adam

答えて

2

[a-z]+は貪欲です。それは文字列全体を消費します。 2番目の2つのキャプチャグループは何も捕らえません。スラッシュがパスの最後にある場合、ルールは一致しません。

あなたがパスセグメントの可能な値を知っている、またはパスセグメントは固定幅がある場合場合にのみこれを行うことができ

RewriteRule ^(ger|fr)(int|float)(sb|mp|rt)/?$ web/$1/$2/$3/index.html [L] 

か:

RewriteRule ^([a-z]{3})([a-z]{3})([a-z]{2})/?$ web/$1/$2/$3/index.html [L] 
+0

これは私が見つけやすい場所です。私はこれを答えにしますが、疑いもあります。これらのmod_rewriteを使用してCSSリンクを使用すると、相対リンクを使用しているとImage .etcが壊れてしまいます。だから私はリンク先ページ全体の絶対リンクへの相対リンクを変更しなければならなかった。どのようにそれを克服するための任意のアイデア? – Adam

+0

[このページ](http://stackoverflow.com/tags/mod-rewrite/info)と[このQ&A](http://stackoverflow.com/questions/27744603/css-js-and-images-do) -not-display-with-pretty-url)を使用します。 – Sumurai8