2017-01-12 3 views
2

.htaccessで書き換えを定義するときにパターンの干渉に問題があります。私は書き換えしようとしています.htaccessの書き換えのパターン干渉

ウェブサイトへのリンクは以下のとおりです。

  • example.com/?item=work - > example.com/work
  • example.com/?item=work &タイル= X - > example.com/work/x
  • example.com/?item=travel - > example.com/travel
  • example.com/?item=travel &ブログ= X - >例。 co.jp/travel/x
  • example.com/?item=about-> example.com/a bout

ここでは私の知識が非常に限られているので、online rewrite rule generatorを使用しています。 「タイル」と「ブログ」URLの書き換えルールについては、「仕事」と「旅行」をパターンにそれぞれ追加してユニークにしました。一般的なページ「仕事」、「旅行」、「約」については、スラッシュの前に何も残されていないのと同じロジックを適用することはできません。したがって、それは、他の2つのルールを妨げる:

RewriteEngine On 
RewriteRule ^([^/]*)$ /?item=$1 [L] 
RewriteRule ^travel/([^/]*)$ ?item=travel&blog=$1 [L] 
RewriteRule ^work/([^/]*)$ /?item=work&tile=$1 [L] 

私はいくつかの研究を行うことを試みたと私はそれが項目で指定するには、追加の基準を含むことができることを発見した:

RewriteRule ^item/([^/]*)$ /?item=$1 [L] 

しかし、そこにありますこれが不要で、 "example.com/about"を使用するような方法でルールを書く方法でも、他の2つのルールに干渉することなく "example.com/?item=about"にリダイレクトされます?

編集

私はちょうど私が、パターンそのものとして、また「旅行」「約」「仕事」を使用することができますシャワーの下で考えていました。これは、(彼らが正しい順序になっている場合)

RewriteRule ^travel/([^/]*)$ ?item=travel&blog=$1 [L] 
RewriteRule ^work/([^/]*)$ /?item=work&tile=$1 [L] 
RewriteRule ^about /?item=about [L] 
RewriteRule ^travel /?item=travel [L] 
RewriteRule ^work /?item=work [L] 

:-)ルールの下のセットになり、彼らが実際に動作しかし、これは非常に汚れて見えます。これを行うより良い方法はありますか?

答えて

0

よさそうです。それを改善するために、最後の3を置き換えることができます。

RewriteRule ^(about|travel|work)$ /?item=$1 [L] 

他の二つのパラメータがそのように別の名前されている1つのルールで行うことができないため、同じ滞在する必要があります。

+0

ありがとうございます、これはよりクリーンで、動作します:-) 私には1つの関連する質問があります。書き換えルールはサーバー上で完全に機能します。しかし、XAMPP(Apache)を使ってウェブサイトをローカルで実行しようとすると、「http:// localhost/dashboard /」に戻ってルーティングされ続けます。 URLが見つからないようですか?私はRewriteBaseを使用しようとしましたが、これは役に立ちません。また、Apacheの設定方法を調べ、AllowOverrideがAllに設定されていることを確認しました。これらの書き換えルールをXAMPP経由でローカルで使用する方法を知っていますか? – Tim

+0

あなたのお越しをお待ちしています。あなたが持っているこの他の問題について新しい質問をすることをお勧めします。適切に見る必要があります。 – SuperDuperApps

+0

よろしくお願いします。私は新しい質問を開きます。 – Tim