2011-12-26 31 views
1

私の問題(Regular Expression For URL Query)に似た質問が見つかりましたが、解決するために問題を解決できませんでした。URL書き換えの正規表現

HTACCESSの正規表現に問題があります。

だから私は私のウェブサイトを持っていることである。

ROOT:

/sites/index.phpおよびその他のファイル

(私のウェブルートは、サブフォルダ内のサイト」です)

/サイト/サイト/ sample_folder_name/

は今、私がやりたいものをURLをリライトすることです:

/サイト/サイト/ sample_folder_name/file_name.php

へ:

/サイト/ file_name.phpsiteredirect = sample_folder_name

覚えている:? をURLはいずれも含まれている場合リクエストパラメータの場合は、次のように書き直す必要があります。

例:

/サイト/サイト/ sample_folder_name/file_name.php CAT_ID = 1 &ユーザ= 2

に:?

/サイト/ file_name.php = 1 &ユーザ= 2 &をCAT_ID siteredirect = sample_folder_name

パラメータは、userおよびcat_idの代わりに不明であると想定されています。それはどんなパラメータでもあり得る。 .phpの後ろに書かれているものは、URLにも記述する必要があります。

手段:?

/サイト/サイト/ sample_folder_name/file_name.php if_any_parameters

その後:?

/サイト/ file_name.php if_any_parameters & siteredirect = sample_folder_name

それ以外の場合:

/サイト/ file_name.php?siteredirect = sample_folder_name

現在、書き換えは素晴らしい取り組んでいるが、私は彼らがパラメータで動作させることができないのです。私は今、私のhtaccessファイルを持っている何

:この後

RewriteRule ^sites\/([0-9A-Za-z_]+)\/([0-9A-Za-z_]+)\.php(.*)$ $2.php(?(?=$3)$3&)siteredirect=$1 [L] 
RewriteRule ^sites\/([0-9A-Za-z_]+)\/$ index.php?siteredirect=$1 [L] 

、それは私に404

を与えている場合は、私はそれが間違ってやっている...助けてください!

RewriteRule ^sites(/sites/[^/]+)/([^/]+)$ $1?siteredirect=$2 [QSA] 

多くはである何、あなたのルールを反転:あなたはQSAフラグ(クエリ文字列追加)必要

答えて

0

あなたはまたL

を使用する必要はありません、<Location>ディレクティブを使用することを検討し、それが意志あなたの仕事をより簡単にする:

<Location "/site/site"> 
    #rules here 
</Location> 

<LocationMatch "^/site/(?!site/)"> 
    #rules here 
</Location> 
関連する問題