web_rootはファイルは何も無く、PCというディレクトリだけあります。
PCというディレクトリには色々ファイルや画像、サブディレクトリが入っていたりで、いわゆる通常のサイト構造になってます。
よろしくお願いします。
ここで、htaccessを使って、あたかもWEB_ROOTにあるようにしてサイトを運営していきたいのですが、どのような記述をすればいいのでしょうか?
wordpressのリダイレクトを参考に
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /PC/index.php [L]
上記にしてみましたが、できませんでした。
web_rootがサイトのドキュメントルートなのでしたら、web_rootに次の.htaccessを設置します。
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /PC/$1 [L]
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
http://blog.dawgsdk.org/weblog/archives/411011
http://memorva.jp/memo/linux/mod_rewrite.php
※「RewriteRule . /PC/index.php [L]」は、「/PC/index.php」にリクエストを渡して処理を任せる場合の記述です。
【追記】※度々すみません。さらに修正済みです。
今回のケースでは、次の記述の方が適しているようです。
RewriteEngine On RewriteBase / # PCディレクトリへのリクエストを除外します。(リクエストされたURLのホスト以降の部分がPCディレクトリ以外で始まる場合にルールを適用) RewriteCond %{REQUEST_URI} !^/?PC/ # または次のように書いても同じ条件になります。 RewriteCond $1 !^(PC) # 次の条件も追記 ※PCディレクトリ内に存在しないファイルやディレクトリを要求された時に、リライト先のファイルが見つからないというNot Foundエラーが表示されるのを避ける為です。リライト先のファイルの存在確認を行ってから、存在する場合のみルールを適用します。 RewriteCond %{REQUEST_FILENAME} -F RewriteRule ^(.*)$ /PC/$1 [L]
web_rootがサイトのドキュメントルートなのでしたら、web_rootに次の.htaccessを設置します。
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /PC/$1 [L]
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
http://blog.dawgsdk.org/weblog/archives/411011
http://memorva.jp/memo/linux/mod_rewrite.php
※「RewriteRule . /PC/index.php [L]」は、「/PC/index.php」にリクエストを渡して処理を任せる場合の記述です。
【追記】※度々すみません。さらに修正済みです。
今回のケースでは、次の記述の方が適しているようです。
RewriteEngine On RewriteBase / # PCディレクトリへのリクエストを除外します。(リクエストされたURLのホスト以降の部分がPCディレクトリ以外で始まる場合にルールを適用) RewriteCond %{REQUEST_URI} !^/?PC/ # または次のように書いても同じ条件になります。 RewriteCond $1 !^(PC) # 次の条件も追記 ※PCディレクトリ内に存在しないファイルやディレクトリを要求された時に、リライト先のファイルが見つからないというNot Foundエラーが表示されるのを避ける為です。リライト先のファイルの存在確認を行ってから、存在する場合のみルールを適用します。 RewriteCond %{REQUEST_FILENAME} -F RewriteRule ^(.*)$ /PC/$1 [L]
すみません。
いきなりのトラブルでネット接続できない状態になったので、返信が遅くなりました。
上記の修正時に確認ミスがあった為、「RewriteCond %{REQUEST_FILENAME} -F」の記述が原因で存在するファイルの内容が返らない記述になっています。
大変申し訳ありません。
正しくは次のようになります。
RewriteEngine On RewriteBase / # PCディレクトリへのリクエストを除外します。(リクエストされたURLのホスト以降の部分がPCディレクトリ以外で始まる場合にルールを適用) RewriteCond %{REQUEST_URI} !^/?PC/ # または次のように書いても同じ条件になります。 RewriteCond $1 !^(PC) # 次の条件も追記 ※PCディレクトリ内に存在しないファイルやディレクトリを要求された時に、リライト先のファイルが見つからないというNot Foundエラーが表示されるのを避ける為です。リライト先のファイルの存在確認を行ってから、存在する場合のみルールを適用します。 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -F RewriteRule ^(.*)$ /PC/$1 [L]
※上記はドキュメントルート直下の場合の記述です。
もしサブディレクトリ内の場合は、次のようにしてみてください。
RewriteEngine On RewriteBase /subdir # PCディレクトリへのリクエストを除外します。(リクエストされたURLのホスト以降の部分がPCディレクトリ以外で始まる場合にルールを適用) RewriteCond %{REQUEST_URI} !^/?subdir/PC/ # または次のように書いても同じ条件になります。 RewriteCond $1 !^(PC) # 次の条件も追記 ※PCディレクトリ内に存在しないファイルやディレクトリを要求された時に、リライト先のファイルが見つからないというNot Foundエラーが表示されるのを避ける為です。リライト先のファイルの存在確認を行ってから、存在する場合のみルールを適用します。 RewriteCond %{DOCUMENT_ROOT}/subdir/PC/$1 -F RewriteRule ^(.*)$ /subdir/PC/$1 [L]
※上記はサブディレクトリ名が「subdir」の例です。ご自分の環境に合わせて変更してください。
ドキュメントルートの方ですが、リライト先のファイルの存在確認でまだ間違いがありました。
次のように修正してください。大変失礼しました!
RewriteEngine On RewriteBase / # PCディレクトリへのリクエストを除外します。(リクエストされたURLのホスト以降の部分がPCディレクトリ以外で始まる場合にルールを適用) RewriteCond %{REQUEST_URI} !^/?PC/ # または次のように書いても同じ条件になります。 RewriteCond $1 !^(PC) # 次の条件も追記 ※PCディレクトリ内に存在しないファイルやディレクトリを要求された時に、リライト先のファイルが見つからないというNot Foundエラーが表示されるのを避ける為です。リライト先のファイルの存在確認を行ってから、存在する場合のみルールを適用します。 RewriteCond %{DOCUMENT_ROOT}/PC/$1 -F RewriteRule ^(.*)$ /PC/$1 [L]
以下の .htaccess を /web_root/ の直下に配置してみて下さい。
RewriteEngine On RewriteBase / RewriteRule ^(.*)$ /PC/$1 [L,R]
『あたかもWEB_ROOTにあるようにしてサイトを運営していきたい』そうですので、Rフラグは必要ありませんね。
回答ありがとうございます。
上記でもだめでした。また改めてトライして、解決したらこちらのコメントに残そうと思います。
>『あたかもWEB_ROOTにあるようにしてサイトを運営していきたい』そうですので、Rフラグは必要ありませんね
http://urbangiraffe.com/plugins/redirection/
すみません。
いきなりのトラブルでネット接続できない状態になったので、返信が遅くなりました。
上記の修正時に確認ミスがあった為、「RewriteCond %{REQUEST_FILENAME} -F」の記述が原因で存在するファイルの内容が返らない記述になっています。
大変申し訳ありません。
正しくは次のようになります。
※上記はドキュメントルート直下の場合の記述です。
もしサブディレクトリ内の場合は、次のようにしてみてください。
2012/12/19 12:06:25※上記はサブディレクトリ名が「subdir」の例です。ご自分の環境に合わせて変更してください。
ドキュメントルートの方ですが、リライト先のファイルの存在確認でまだ間違いがありました。
2012/12/20 02:21:35次のように修正してください。大変失礼しました!