2016-07-24 14 views
0

私は.htaccessファイルの基礎を学び始めました。ここで私は.htaccessファイルを使ってツリー構造ファイルを作成する方法を知りたかったのです。例えば、私は階層のような: - 科学 - >生物学 - >動物学 - >皮膚科。ドメインはwww.mydomain.comです。だからツリー構造ファイルを.htaccessを使ってPHPで作成する

私が科学をクリックすると、URLはwww.mydomain.com/scienceになるはずです。

科学の下で、私は生物学をクリックすると、URLがwww.mydomain.com/science/biologyでなければなりません。

生物学の下で、私は動物学をクリックすると、URLがwww.mydomain.com/science/biology/zoologyでなければなりません。等々。私は科学をクリックするとここで

は私がURL www.mydomain.com/branch/scienceとhtaccesファイル

を使用して branch.phpファイルにコードを書いています、私はこれまでのところ、 branch.phpと呼ばれるページを作成しようとしたものです

Options -Multiviews 
 
Options +FollowSymLinks 
 
RewriteEngine on 
 
RewriteRule ^branch/(.*) branch.php?branch_name=$1 [L]

だから私は、私は.htaccesを使用してページ(branch.php)を作成することなく、www.mydomain.com/science/biology/zoologyのようなURLを作成することができますファイル。

答えて

1

あなたの思考には少し混乱があります。

制限なしでPHPに生成する任意の種類のURLです。

そして.htaccess(と特にmod_rewrite)は、特定のphpファイルへのリクエストのリダイレクト(ユーザーに対して透過的)にのみ使用されます。

だから、はい、あなたは、このようなURLを行うことができます。http://www.example.com/science/biology/zoologyとあなたの.htaccesは次のようにする必要があります:次に

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* branch.php [L] 

branch.phpにあなたは$_SERVER['REQUEST_URI']を調べて(それがこの/science/biology/zoologyようになります。)とすべきですユーザーに何を表示するかの決定。

RewriteCond %{REQUEST_FILENAME} !-fは、要求されたURIが実際のファイルを指していないことをテストするために必要です。


UPDATE:あなたが$_GET配列を使用したい場合branch.phpあなたが次の操作を行うことができます:URL内のキーワード(ファイル名)をbranch.php見せたい

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]*)$ branch.php?main_branch=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/([^/]+)$ branch.php?main_branch=$1&sub_branch=$2 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ branch.php?main_branch=$1&sub_branch=$2&sub2_branch=$3 [L] 
+0

しかし、私はいけません、出来ますか ? – silent

+0

はい、可能です。私の答えでは、URLに 'branch'キーワードはありません。 – spirit

+0

あなたの答えをありがとう、私にこれを試してみよう。 – silent