2011-07-12 14 views
3

私は「サブ」内..「サブ」と呼ばれ、ドメインおよびサブフォルダを持っているが、これを持っているindex.phpを次のとおりです。のmod_rewrite

$page = $_GET['page']; 
switch ($page) 
{ 
    case "main": 
     echo "main"; 
     break; 
    case "task_orders": 
     echo "task_orders"; 
     break; 
    case "team_members": 
     echo "team_members"; 
     break; 
    case "team_experience": 
     echo "team_experience"; 
     break; 
    case "quality_assurance": 
     echo "quality_assurance"; 
     break; 
    case "geographical_support": 
     echo "geographical_support"; 
     break; 
    case "contact": 
     echo "contact"; 
     break; 
    default: 
     echo "main"; 
} 

「サブ」の私のhtaccessファイルは、次のとおりです。

<li><a href="/sub/main" title="Main" class="current">Main</a></li> 
<li><a href="/sub/task_orders" title="Task Orders">Task Orders</a></li> 
<li><a href="/sub/team_members" title="Team Members">Team Members</a></li> 
<li><a href="/sub/team_experience" title="Team Experience">Team Experience</a></li> 
<li><a href="/sub/quality_assurance" title="Quality Assurance Program">Quality Assurance</a></li> 
<li><a href="/sub/geographical_support" title="Geographical Support">Geographical Support</a></li> 
<li><a href="/sub/contact" title="Points of Contact">Points of Contact</a></li> 

私はむしろ、私は午前何ページの任意のアイデアを出しエコーよりもページが見つかりませんを取得します:私はのように見えるのリンクをクリックし

Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^sub/([^/\.]+)/?$ index.php?page=$1 [L] 

?私も試してみました

RewriteRule ^/sub/([^/\.]+)/?$ /sub/index.php?page=$1 [L] 

と同じ結果

+0

が要求されているものを参照してアクセスログを見てください。ステップ1は、書き換えルールをデバッグする際にログに表示されます。 –

+0

残念ながら、私が取り組んでいるウェブサイトには何も含まれていません。私は専用のサーバ上にあるので、ログにアクセスでき、約1時間更新されていないので、かなりのリライトコンボを試しています。 – Ronnie

+0

実行したヒットごとに行があるはずです。あなたが見ているログが更新されていない場合、それらは "ライブ"ログではありません。 –

答えて

5

あなたはほとんどそこにいます。 RewriteRuleを書き込むときに先頭の/を指定したくない場合。ドキュメントルートで

RewriteEngine on 
RewriteRule ^sub/([^/\.]+)/?$ /sub/index.php?page=$1 [L] 

/サブフォルダから:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L] 
+0

はまだ404 'RewriteRule^sub /([^/\.]+)/?$ /sub/index.php?page=$1 [L]'になっています。これはhtaccessがルートにある? – Ronnie

+0

@Ronnie - ルートにする必要があります。上記の行は、 'sub'という名前のフォルダと' sub'フォルダの中にある 'index.php'というルートに' .htaccess'を作成することでテストサーバー上でテストしました。 '.htaccess'ファイルがあなたのサーバによって読み込まれていますか? –

+0

okサブディレクトリにhtaccessがありました。私はそれをルートhtaccessに追加し、現在は動作しています。だから、常にルートレベルでhtaccessを使用すると仮定するのは安全ですか? – Ronnie

2

あなたの.htaccessがサブディレクトリにある場合は、記述する必要はありませんRewriteRuleのフルパス。

だから、サブディレクトリに.htaccessファイルでこれを使用します。

RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L] 

またはルートの.htaccessで:

RewriteRule ^sub/([^/\.]+)/?$ sub/index.php?page=$1 [L] 
+0

でも機能します。これも機能します。ありがとうございます。 – Ronnie