2012-02-03 16 views
0

に再指向は、私は(index.phpを)htaccessファイル - 再書き込みURLながら、異なるURL

は今、私はきちんとURLの必要なすべての要求を処理する1ページを持つサイトを持っていると言うことができますので、私がすることができます有効なURLのリダイレクト先の.htaccessを使用 -

パート1 - 再指示するURL文字列を解析するために、配列に「爆発」されるインデックスページへのすべての要求:

RewriteCond $1 !^(index\.php|robots|files|blog|[0-9]+$) 
RewriteRule ^(.*)$ index.php?page=$1 [L] 

をパート2 - http://example.com/123456

RewriteRule ^([0-9]+)$ index.php?user=$1 [L] 

パート3からhttp://example.com/blog/blog_title.html

ここに明らかに
RewriteRule ^blog/([a-z0-9-_]+)\.html$ index.php?blog=$1 [L] 
RewriteRule ^blog/. /blog/ [R] 

、私は ".htmlを" 前のブログ変数が一部であるとindex.phpにブログ記事をリダイレクトしています(blog_title )、それに準拠していないURLは/ blog /ディレクトリに転送されます。

私が持っている問題は、任意の助けをいただければ幸いhttp://example.com/blog/

を表示するアドレスバーを維持しながら、私は「index.phpを?ページ=ブログ」にまで再度直接URLを必要とするということです!

+0

RewriteRule^blog /(。)/ blog/[R] 'とは何ですか?また、あなたがきれいなURLを作っているときに、あなたのブログURLが '.html'で終わるようにしたいのですか? – Gerben

+0

これは 'RewriteRule^blog /([a-z0-9 -_] +)\。html $ index.php?blog = $ 1 [L]'行の後に来るので、 'RewriteRule^blog /(。)/ blog/[R] 'ディレクトリが' blog/'(' index.php'ではなく)に設定されているかどうかをチェックし、 'blog /'の後に何かがあるかどうかを確認してから(404ページを表示するのではなく) 'blog /'ディレクトリに移動します。 また、 '.html'で終わると、どこか読んだ静的なページの印象は、ファイル拡張子のないページに問題があり、それをディレクトリとして扱う検索エンジンの方が良いでしょう。 –

+0

私はそれが 'RewriteRule^blog /になるかもしれないと思います。/blog/[R] 'の後ろに' blog/'の後に文字列を使用していないので、角括弧をつけたのとは対照的に –

答えて

1

自分で解決策を見つけたとしても、これを解決する別の方法に興味があると思いました。私は

RewriteCond $1 !^blog/. 
RewriteCond $1 !^(index\.php|robots|files|[0-9]+$) 
RewriteRule ^(.*)$ index.php?page=$1 [L] 

たぶん、あなたもRewriteCond $1 !^(index\.php|robots|files|blog/.|[0-9]+$)に二つの条件を組み合わせることができますが、論理的-か(すなわち|)の優先順位について、私はわからない:-)思い付いたところです。

+0

問題は、 'blog/.'セクションを使って実際の変更を上書き/転送する必要があり、'。html' –

+0

実際、最初のRewriteCondの 'blog'部分は初期転送を止めるために行います! –

+0

URLが '/ blog/* 'で始まっていれば、それは書き換えられませんが、3番目のルールが適用されます。この解決策はパート1の変更に過ぎませんでした。したがって、パート2とパート3が必要です。これで分かった余分なルールは必要ありません。問題を解決しました。 – Gerben

0

私は愚かな気分です...

ちょうど最後に行が追加されました!

RewriteRule ^blog/ index.php?page=blog [L] 
関連する問題