2017-02-16 6 views
3

ゼロ、1つまたは2つの変数のディレクトリを作成するhtaccessスクリプトを作成しようとしています。.htaccessで動的ディレクトリとサブディレクトリを作成する方法

私のファイルは、次の2つのget変数を受け入れます。モデルを作る。

これは3段階のページです。私は現在/new.phpにあるページを持っています。このページでは、最初の変数(私の場合は車両メイク)を選択することができます。このページでmakeを選択すると、ユーザーは/new.php?make=Acuraに移動します。このページには、すべてのAcuraモデルのリストが表示されます。ここからモデルをクリックすると、/new.php?make=Acura &モデル= TLXに転送されます。彼らは今、サブモデルを選択することができ、情報ページに移動されます。

だから私は、取得しようとしている:

new.php to go to /new/ 
new.php?make=XMake to go to /new/XMake/ 
and new.php?make=XMake&model=XModel to go to /new/XMake/XModel/ 

これは限り私は私のコードを得ているようです。

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^new/(.*)$ new.php?make=$1 [L,NC] 

しかし、私はこの後に追加したすべての変数は、最初のを破るように見えますディレクトリ?どうしてこれなの?

答えて

1

あなたはあなたのサイトのルートの.htaccessにこれらのルールを使用することができます。

Options -MultiViews 
RewriteEngine On 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^new/([\w-]+)/([\w-]+)/?$ new.php?make=$1&model=$2 [L,NC,QSA] 

RewriteRule ^new/([\w-]+)/?$ new.php?make=$1 [L,NC,QSA] 

RewriteRule ^new/?$ new.php [L,NC] 
1

ルールの順序は重要です。このルールを最初に使用すると、/new//new/XMakeまたは/new/XMake/XModel/という要求がすべて一致し、次の規則は無視されます。

他のルールと一致させるには、より具体的にする必要があります。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^new/(.+?)/(.+)$ new.php?make=$1&model=$2 [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^new/(.+)$ new.php?make=$1 [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^new/$ new.php [L,NC] 
関連する問題