• 締切済み

mod_rewrite の記述について

.htaccess に、mod_rewrite の記述を書いて、以下のようなことをしたいのですが、 1.http://www.example.com/abc/ の場合 URLはそのままで、内容は /main/abc/以下 (の同名ファイル)を表示 2.http://www.example.com/main/abc/ の場合 URLは http://www.example.com/abc/ になり、内容は/main/abc/を表示 以前教えていただいた以下の記述でできるのですが、ディレクトリが追加されたら、.htaccess にも追加が必要になってしまいます。 どのように実現すればよいでしょうか? ------------------------------------------------------------ RewriteCond %{REQUEST_URI} ^/main/(.*)$ RewriteCond %{HTTP:My_Redirect} !yes RewriteRule ^main/(.+)$ http://example.com/$1 [QSA,R] RewriteCond %{REQUEST_URI} ^/(abc|aaa|bbb|ccc|ddd)/ RequestHeader set My_Redirect yes RewriteRule ^(.*)$ /main/$1 [QSA,L] ------------------------------------------------------------

みんなの回答

回答No.1

こんにちは。 mainの階層が増えるのなら、致し方なしですね。 abcとかaaaの話なら、 RewriteCond %{REQUEST_URI} ^/(abc|aaa|bbb|ccc|ddd)/ これ外しちゃったらよくね? 存在しないフォルダにアクセスされても、404になるだけだし・・・。 今でも、 RewriteRule ^(.*)$ /main/$1 [QSA,L] ここをスルーしたら404なので、一緒だと思うんだけど?

genuine2010
質問者

お礼

ありがとうございます。 RewriteCond %{REQUEST_URI} ^/main/(.*)$ RewriteCond %{HTTP:My_Redirect} !yes RewriteRule ^main/(.+)$ http://example.com/$1 [QSA,R] RequestHeader set My_Redirect yes RewriteRule ^(.*)$ /main/$1 [QSA,L] にするということでしょうか? Internal Server Errorになるのですが、何かまずいでしょうか? せめて、2.はできなくても、 1.http://www.example.com/abc/ の場合 URLはそのままで、内容は /main/abc/以下 (の同名ファイル)を表示 は実現したいのですが、何かよい方法ないでしょうか?

関連するQ&A