私のブログのサブディレクトリにあるページを除き、すべてのリクエストを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]
半分の作業です!今私はドキュメンテーション/何かを置く場合、それは素晴らしい作品です。しかし、今では私の "非ドキュメンテーション"リダイレクトを行っていません。たとえば、私はそれが "一般的な"ケースの最後の行にあると確信していません。 – Eric
動作していないサンプルURLと期待される結果を提供できますか? –
たとえば、www.my_domain.com/authenticate/show-user-login-formはログインページ(上記のコードなし)に移動します。または、www.my_domain.comのような基本的なものは、index.phpを経由してホームページを表示する必要があります。どちらも起きていない。 – Eric