2016-06-19 15 views
-1

サーバールートがhttp://localhost:8081/ですが、すべてのWebプロジェクトがローカルサーバーのサブディレクトリhttp://localhost:8081/WWW/PHP/にあるように、Usbserverを自分のPCのローカルWebサーバーとして設定しました。ローカルホストとリモートサーバーのhtaccess値

:今、すべてが正常に動作している - すべての相対パスは、彼らが必要として動作しますが、私は.htaccessファイルを再生すると、私はこのような相対パスで私のカスタム404.phpページを設定したいよう:

ErrorDocument 404 /php/errors/404.php 

...それは実際には私の実際に動作している種類のサーバルート(http://myproject.com/になるリモートサーバにアップロードされたcos)のhttp://localhost:8081/WWW/PHP/myproject/の代わりに、http://localhost:8081/の代わりにhttp://localhost:8081/を指しているので、 。

これはリモートサーバーでは絶対に問題ありませんが、ローカルサーバーの構造ではここでは問題ありません。

ErrorDocument 404 ./php/errors/404.php 

を...しかし、それが表示された文「./php/errors/404.php」と空白のページになってしまった:私は、一つの提案のようにしてみてください。

質問:それは、ルートサーバーの代わりに「http://localhost:8081/」の「myprojectに」ディレクトリにあると思いますが、一度私のリモートサーバーにアップロード、のはhttp://myproject.com/それを言わせてしまうので、「普遍的」.htaccessファイルにコードを記述する方法をまだ正常に動作しますか?

は覚えている:を彼らのすべてがそのように動作を停止しますので、私は「http://localhost:8081/WWW/PHP」にも、他のウェブページの量子を持っているcosを私はUsbserver設定で自分のローカルサーバのルートを書き換える使用することはできません!

これを解決する何らかの種類のRegExコードがあると思います(Stackoverflowの人はこのようなことをやっています)しかし、私は他の人の助けを借りずにRegEx自身ではかなり悪いです"失われた"。

多くの解決策がありましたが、実際にこの特定のタスクを解決するものは見つかりませんでした(ほとんどの場合、Virtual Serverのサーバールートを書き直すことを提案しています - Usbserver - 上記の理由で行う)。

リモートホストにウェブサイトをアップロードするたびに、ローカルホストとリモートサーバでOKを実行してから、.htaccessコードを書き換えずに済みます。

PS:私も気づいた私のような私のローカルサーバーに対してabsolutleパスと私のカスタム404.phpページを設定する場合:

ErrorDocument 404 http://localhost:8081/WWW/_PHP_/myproject/php/errors/404.php 

...それは動作しますが、それはそのカスタム404ページにURLを変更元の「存在しない」URLアドレスにとどまるのではなく、なぜですか?通常編集されていない404ページでは、URLは変更されませんが、同じままです(=存在しないリンク)。

EDIT - 最終的な解決策: だから、演奏時間、ウェブを閲覧するいくつかの追加の有用な情報の任意のビットを検索した後、私は最終的に私が望んでいたとして、それは正確に働いて得た - エラーページのための別のディレクトリ(404など)ローカルホストとリモートサーバの場合に指定されていますが、ここでは(あなた自身:それは私自身のコードなので、よく見えないかもしれません - 私は初心者です。htaccessのようなものですが、少なくとも私はうまく動作します):

# RULES FOR ERROR PAGES DIRECTORY IN CASE OF localhost:8081 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^localhost:8081 [NC] 
RewriteRule .? /WWW/_PHP_/myproject/php/errors/404.php [L] 

# RULES FOR ERROR PAGES DIRECTORY IN CASE OF remote server (actual webpage on public server) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} !^localhost:8081 [NC] 
RewriteRule .? /php/errors/404.php [L] 
+0

なぜこの質問は、downvotedた本当に私には謎ですが、OK、何でも、みんな – errerr

答えて

0

これは実用的なソリューションである

# RULES FOR ERROR PAGES DIRECTORY IN CASE OF localhost:8081 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^localhost:8081 [NC] 
RewriteRule .? /WWW/_PHP_/myproject/php/errors/404.php [L] 

# RULES FOR ERROR PAGES DIRECTORY IN CASE OF remote server (actual webpage on public server) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} !^localhost:8081 [NC] 
RewriteRule .? /php/errors/404.php [L] 
0

エラー文書ディレクティブでは、相対パスは使用できません。完全なURLの代わりに絶対パスを使用することができます。

ErrorDocument 404 /www/_php_/myproject/php/errors/404.php 

参考:

https://httpd.apache.org/docs/2.4/custom-error.html

+0

申し訳ありませんが、このローカルホストとリモートサーバーの両方で動作しない+私はすでに私がこれを試してみたと答えたが、それはうまくいったが、それはsuiではなかった私の必要性のためのテーブル(質問を読んでください) – errerr

+0

私はあなたの要件が質問の外だと思う。これを実現するには、mod-rewriteを使用する必要があります。上記のErrorDocumentドキュメントをお読みください。 – starkeen

+0

ここで誤解を避けるために - 私はあなたが間違っていると言っているわけではなく、あなたがそうであると言っているわけではありません、私はこれが私を助けません+私は待っていると言っているだけです**任意の解決策**のためにRewriteEngine/RewriteCond/RewriteRuleのコンボかこれを解決する何か... ;-) – errerr

関連する問題