2009-08-28 23 views
2

環境: Apache 2はMac OS X Leopardに同梱されています。デフォルトのhttpd.confに大きな変更はありません。mod_rewriteでの相対URLの使用

私は.htaccessでいくつかの書き換えを設定していますが、現在のディレクトリからの相対パスは使用できません。

# URL: http://localhost/~davis/rewrite/.htaccess 
# File: /Users/davis/Sites/rewrite/.htaccess 

RewriteRule go.php target.php 

# Not working 

私はhttp://localhost/~davis/rewrite/target.phpにユーザーをリダイレクトするルールを期待しています。正しい物理パスに解決していますが、パス/Users/davis/Sites/rewrite/target.phpが存在しないという404というメッセージが表示されます。

完全なURLを指定すると、すべてうまく動作します。

# URL: http://localhost/~davis/rewrite/.htaccess 
# File: /Users/davis/Sites/rewrite/.htaccess 

RewriteRule go.php /~davis/rewrite/target.php 

# Works 

ここに何か不足していますか? httpd.confに設定するものは何ですか?

ありがとうございます!

編集:私のライブLinuxサーバーでは、相対URLが正しく動作しています。ローカルのMacボックスに問題があります。ベースURLを調整する

答えて

1

最終的に解決しました。

DocumentRootをmy〜/ Sitesディレクトリに設定するか、そのパスにVirtualHostを作成すると動作します。どうやら、ユーザーディレクトリの設定では、Apacheは物理パスを~usernameエイリアスにマップできませんでした。

皆さん、ありがとうございました!

+0

解決策について詳しく説明できますか? – jnthnclrk

+0

デフォルトでは、URL http:// localhost /〜davis /を使用してローカルサイトにアクセスします.davisは自分のユーザー名です。しかし、この設定では、相対RewriteRulesを使用できませんでした。 のDocumentRoot「/ユーザ/デイビス/サイト」 をそして、これは問題を解決しました:私がやったことは、直接私のサイトを指すようにApacheのhttpd.conf内のDocumentRootの設定を変更することでしたがフォルダ。今、http:// localhost /にある自分のローカルサイトに直接アクセスしています。 confファイルは/ etc/apache2/ にあります。 –

1

試してみてください。

RewriteBase /~davis/rewrite/ 
+0

Gumboに感謝します。しかし、私の目標は、.htaccessをアプリケーションがインストールされているサーバーディレクトリから独立させることです。 RewriteBaseを使用している場合は、正しいディレクトリに設定する必要があります。一方、現在のディレクトリとの相対的なURLを与えることができれば、問題はほぼ解決されます。 –

0

あなたがでRewriteBaseを試してみてください、私はあなたが何かできることはないと思うこと以外のことができます。

RewriteBase /~davis/rewrite/ 
+0

事は、私のLinuxサーバー上で、そして私のローカルのWindowsボックスでも、相対パスが正しく動作しているということです。私はこれがユーザーディレクトリの設定方法(〜davisなど)と関係があるのだろうかと思います。 –