2011-11-15 5 views
3

私はこのサイトを徹底的に検索していますが、これについてもグーグルではありますが、無駄です。 私はMac OS XでApache2 + PHPを使用しています。 すべての設定を変更していないので、すべて正常に動作するだけです。これはhttp://localhost/~milad/mysite/*にあるすべてのファイルに対してだけで正常に動作しMac OS X Lion(10.7)のApache2の相対パスに書き直してください。Lion(10.7)

<IfModule mod_rewrite.c> 

Options +FollowSymLinks 
Options +Indexes 

RewriteBase /~milad/mysite/ 

RewriteEngine On 

RewriteRule ^$ index.php?:url [L,QSA] #Handling tail with no parameters 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*?)$ index.php?:url=$1 [L,QSA] 

</IfModule> 

: はここに私の.htaccessファイルです。 しかし、.htaccessファイルを自分のインストールの詳細と独立させたい、つまり自分のコードにRewriteBase ...行を含める必要がないようにします。

しかし、私がその行を削除すると、Apacheは理解できないURLにマップしようとします。私は何を得る は次のとおりです。

に/Users/milad/Sites/newave/index.phpは、このサーバー上に見つかりませんでした要求されたURLが見つかりません。

index.phpファイルがそのURIが指し示す場所にあるので、ちょっとばかげています。 とにかく、index.phpの代わりに/index.phpに書き直そうとすると、http://localhost/index.phpに書き換えられています。それでは、どうやって相対パスだけを使うことができないのですか、あるいは./index.phpを使用してください(はい、これも試しました)。

洞察力があれば幸いです。

+0

です。htaccessファイルはドキュメントルート(http:// localhost/points to)または/〜milad/mysite /がどこにあるのでしょうか? –

+0

後者です。 '/〜milad/mysite /'にあります。 –

+0

具体的には、 '/ Users/milad/Sites/mysite/.htaccess'にあります。 –

答えて

4

問題は、あなたのバーチャルホストの設定から来ている:明確

Not Found 
The requested URL /Users/milad/Sites/newave/index.php was not found on this server. 

手段: "あなたのサイトのベースが/Users/milad/Sites/newave/です"。 あなたはもちろんのDocumentRoot

<VirtualHost *> 
    ServerName mysite.com 
    DocumentRoot "/~milad/mysite/" 

</VirtualHost> 

を変更するには、/~milad/mysite/試してみることにするサイトのための基盤をしたいのであれば、あなたのすべてのファイルサイトは、フォルダ「/~milad/mysite/」でなければなりません。

Options +FollowSymLinks 
Options +Indexes 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) index.php?:url=$1 [L,QSA] 
:あなたのhtaccessファイル( ^(.*?)$(.*)に相当し、あなたが RewriteRule ^$を必要とする理由、それは終わりで適切に処理しなければならないので、私は理解していない旨の通知)で次に

それは

を動作するかどうか教えてください

編集:コメントに続いて、ここに私の作品のバーチャルホストのファイルがあります:

<VirtualHost *> 
    DocumentRoot "/web/htdocs/olivier/wwog" 
    ServerName wwog.fr 
    ServerAlias *.wwog.fr 

    ErrorLog "/web/logs/wwog.error.log" 
    CustomLog "|/opt/httpd/bin/rotatelogs /web/logs/wwog/access.%Y-%m-%d-%H_%M_%S.log 5M" combined 

    DirectoryIndex index.php index.htm 

    <Location /> 
     # Compression: 
     # (http://httpd.apache.org/docs/2.0/mod/mod_deflate.html) 
     # Insert filter 
     AddOutputFilterByType DEFLATE text/html text/plain 
     SetOutputFilter DEFLATE 

     # Netscape 4.x has some problems... 
     BrowserMatch ^Mozilla/4 gzip-only-text/html 
     # Netscape 4.06-4.08 have some more problems 
     BrowserMatch ^Mozilla/4\.0[678] no-gzip 

     # Don't compress images 
     SetEnvIfNoCase Request_URI \ 
     \.(?:gif|jpe?g|png)$ no-gzip dont-vary 

     # Make sure proxies don't deliver the wrong content 
     Header append Vary User-Agent env=!dont-vary 
    </Location> 

    # Add "Cache-control: public" = valid for 480 weeks 
    # for proxies to keep images in cache: 
    <FilesMatch "\.(ico|flv|jpg|jpeg|png|gif|swf)$"> 
     Header set Cache-Control "max-age=290304000, public" 
    </FilesMatch> 

    # Forbid files that start with "_" 
    <FilesMatch "^_"> 
     Order allow,deny 
     Deny from all 
     Satisfy all 
    </FilesMatch> 

    # Forbid .htaccess and .htpasswd 
    <FilesMatch "^\.ht"> 
     Order allow,deny 
     Deny from all 
     Satisfy all 
    </FilesMatch> 

    <Directory "/web/htdocs/wwog"> 
     Order allow,deny 
     Allow from all 
     Deny from none 
     AllowOverride All 
    </Directory> 

</VirtualHost> 
+0

私の 'DocumentRoot'は'/Library/WebServer/Documents'に設定されているので、 'http:// localhost'がそれにつながります。しかし、私の現在のユーザの私の個人的なウェブサイトは '/ Users/milad/Sites /'なので、 'http:// localhost /〜milad /'がそこにつながります。私はこれがどのように設定されているのかわかりませんが、それは私の本当の問題ではありません。 –

+0

設定が 'mod_userdir'モジュールの' UserDir'ディレクティブを使って設定されていることがわかりました。しかし、正規表現のポインタをありがとう。 –

+0

フォローアップありがとう。 相対リライトとmod_userdirの両方を有効にしても動作しないようです。 apache2のログを見ると、私は 'RewriteRule'ステートメントを実行するとApacheが'/Users/milad/Sites/mysite/index.php'にあるファイルを探し出そうとしますが、絶対パスであれば、 'DocumentRoot'の内部でそれを見つけようとします。 エラー: ファイルが存在しません:/ Library/WebServer/Documents/Users –

関連する問題