2016-04-24 11 views
0

私のブログのサブディレクトリにあるページを除き、すべてのリクエストをindex.phpを通して送信しています。私は親フォルダのmod_rewriteを使ってこれを行うことができました。なぜこのmod_rewriteはリダイレクトしませんか?

ドキュメント/いくつかのファイル:

RewriteCond %{REQUEST_URI} !^/blog 
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

]

しかし、私はまた、彼らはフォームを持っている場合は、私のブログのフォルダにリクエストを送りたいです。

私が試してみた:

RewriteRule ^/documentation/(.+)$ https://www.some_domain.com/blog/documentation/$1 

を私の要求が、この場合、ブログフォルダに送信取得されていないようにそれは見えます。私の完全なコードは以下の通りです:

RewriteEngine On 

#redirect to index.php as appropriate 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^/documentation/(.+)$ https://www.some_domain.com/blog/documentation/$1 

RewriteCond %{REQUEST_URI} !^/blog 

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

は編集:

私は私が期待した通りに動作しますが、以下とするRewriteCondの前にするRewriteRuleを移動した後、@ Rijulの提案を少し変更したバージョンを使用しました。言い換えれば、ドキュメンテーションのための書き換えは、ブログサブフォルダへの再書き込みを実行します。そして、他のすべてのリクエストは私のindex.phpファイルを通過します。この時点で、私は理由を理解したいと思います。私が知っていることから、

RewriteEngine On 
RewriteRule ^documentation/?(.*)$ /blog/documentation/$1 [R=301,L] 

#redirect to index.php as appropriate 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 


RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

答えて

2

このすべての書き換えルールと条件なし

RewriteEngine On 

がブログ/ドキュメントに

RewriteRule ^documentation/?(.*)$ /blog/documentation/$1 [R=301,L] 

書き換えドキュメントを無視されます

RewriteCond %{REQUEST_FILENAME} !-d 

この共同編集nditionは、要求されたディレクトリ名が存在しないかどうかをチェックします。終了しない場合。次に、次の条件に進みます。

RewriteCond %{REQUEST_FILENAME} !-f 

この書き換え条件は、要求されたファイル名が存在しないかどうかをチェックします。終了しない場合。次に、次の条件に進む

RewriteCond %{REQUEST_FILENAME} !-l 

この書き換え条件は、要求されたシンボリックリンクが存在しないかどうかをチェックします。終了しない場合。そして、これは、操作を生産するように書き換え条件を書い

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

index.phpに書き換え?URL =

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

ルールを書き換えるに進みます。

(その名前で無いファイル終了)と(その名前で無いディレクトリ出る)と(その名前でシンボリックリンク終了)

これが本当であれば、PHPファイルに書き換えます。(そのディレクトリにはディレクトリが存在しません)/ブログ(そのようなディレクトリが存在するため)この場合、はfalseになります。

+0

半分の作業です!今私はドキュメンテーション/何かを置く場合、それは素晴らしい作品です。しかし、今では私の "非ドキュメンテーション"リダイレクトを行っていません。たとえば、私はそれが "一般的な"ケースの最後の行にあると確信していません。 – Eric

+0

動作していないサンプルURLと期待される結果を提供できますか? –

+0

たとえば、www.my_domain.com/authenticate/show-user-login-formはログインページ(上記のコードなし)に移動します。または、www.my_domain.comのような基本的なものは、index.phpを経由してホームページを表示する必要があります。どちらも起きていない。 – Eric

関連する問題