2011-10-29 13 views
8

私はMacBook Proのプロフェッショナルにウェブサイトプロジェクトを持っています。私はapache2とphpでビルドしています。 htaccessを使うために、httpd.confとuser.confの両方で自分の設定を行いました。以下のように行われた変更:私は はlocalhost /〜ユーザー名/サイト/サイト/ index.phpを/歓迎のようなサイトを開きたいときに問題が、index.phpのは、いくつかの操作を行い、右のコントローラを発見された.htaccess rewriteruleが正しく動作しません。

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 

<Directory > 
    AllowOverride All 
</Directory> 

と正しいページ。

しかし、私は、サイト/歓迎Apacheは私に次のエラーを与えるようにサイトを入力しよう:

要求されたURLユーザ/ユーザ名/サイト/サイト/ index.phpを/歓迎ではなかったが見つかりませんでしたこのサーバー上に見つかりました。

問題はApacheが実際にファイルであり、エラーステートメントがファイルシステムでそれを与えることですが、この要求をindex.phpにフェッチする必要があります。

私の.htaccessファイルは、この構成は、LinuxとWindowsの両方で動作しますが、Mac上で動作しないことを私を悩ます何この

<ifModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L] 
</ifModule> 

のように見えます。私は運命を感じる:)

+0

を使用する必要はありませんでしたその後

LoadModule rewrite_module libexec/apache2/mod_rewrite.so LoadModule php7_module libexec/apache2/libphp7.so 

あなたが書き換えモジュールを確認することができます。有効になっていますか? – Phil

+0

はい、私はphpinfo()のロードされたモジュールのセクションでそれらを見ることができます。 – LostMohican

+0

あなたの受け入れられた回答を変更することを検討しますか?あなたが受け入れたものは実際には間違っています。 @トンによる答えは正しいです。 – spikyjt

答えて

15

私も同じ問題に会いました! 「DocumentRoot」は私にとってLionでは機能しません。

しかし、これは動作します:

マックOSXマウンテンライオンで
RewriteEngine On 

RewriteBase /~username/YOURPath 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L] 
+1

素晴らしい!私はこれを理解しようと3時間かけて過ごしました。ありがとう! –

+1

私は同じ問題に直面しましたが、時間を節約するため+1 – imsyedahmed

+2

これは正解であるため、受け入れられた答えでなければなりません - RewriteBaseは常に設定する必要があります。 DocumentRootの変更はハックです(うまく構成されたサーバー上では.htaccessからはできません)。 – spikyjt

4

あなたはあなたのの.htaccessファイルに次の行を追加する必要があります。

DocumentRoot "/~username/site/" 
5

AllowOverrideはディレクトリ上のAllに設定されていることを確認してください/

<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
    Order deny,allow 
    Deny from all 
</Directory> 

と、ドキュメントのルートパスのルートディレクトリ:

<Directory "/Library/WebServer/Documents"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 

また、FollowSymLinksOptionsに含まれています。あなたの「index.phpのレスかなりURLは」あなたのDocumentRootの上にない場合は

、その後、次の例のように、あなたのindex.phpが存在するあなたの.htaccessファイルに次のようでRewriteBaseディレクトリを追加します。

RewriteBase /~username/site/site/ 

あなたが.aclhtaccess.txtのような何か他のものに.htaccessファイル名を変更したい場合は、あなたのhttpd.conf

# Various default settings 
Include /private/etc/apache2/extra/httpd-default.conf 

に以下の行のコメントを解除し、で.htaccessを変更extra/httpd-default.confファイルで好きなものに指示してください。たとえば、あなたはhtaccess.txt変更、それはへのへ.htaccessファイルを変更したい場合:、それらの保存

AccessFileName htaccess.txt 

OSXマウンテンライオン上のApache Webサーバを再起動して、あなたが行ってもいいです願っています。 これが役立つことを願っています。

2

私は同じ問題を抱えていたが、上記の解決策は、私のために動作しませんでした、最初からスラッシュを削除

は(私のブラウザはすでに正しいユーザーの下で実行されますので、私は推測する)トリックを行いました。

そうするRewriteRule ^登録/register.php

私にナットを運転

register.phpのRewriteRule ^登録になりました!私はmac os 10.8でxampp(apache 2)を実行しています。

0

私は.htaccessを/ Library/WebServer/Documentsに置き、 "localhost /"を開きます。それをテストするために、これは期待どおりに動作します。 "〜/ Sites"では動作しません。

1

私は同じ問題を抱えていましたが、私の問題はmod_rewriteが有効になっていないことでした。

私は/etc/apache2/httpd.confファイルにこれらの2行のコメントを解除する必要がありました:RewriteBaseなど

関連する問題