php-リモートApacheサーバーでRESTfulzend2アプリを実行する方法エラー404:このサーバーにURLが見つかりません
RESTfulzendアプリケーションをリモートのApacheサーバーに数日間デプロイするのに苦労しています。同様の質問が何度も投稿されていることを私は知っています。しかし、最初に私はサーバー構成の世界に完全に慣れていません。次に、これらの投稿の多くのソリューションを読んで試しましたが、成功しませんでした。
アプリはローカルホストで完全に機能しています。ただし、リモートサーバーでは状況が異なります。 zendスケルトンアプリ全体をapacheサーバーのvar/www / htmlディレクトリにアップロードした後、すべてのフロントエンドコードを含むパブリックフォルダーには、次のURLから簡単にアクセスできます:domain / myZendApp / public/pathToView。それにもかかわらず、これは第一に専門家ではなく、第二に、自分のアプリ用に開発したzendRESTfulエンドポイントのいずれにもアクセスできません。たとえば、ローカルホストでは、ユーザーコントローラーからユーザーリストにアクセスするために使用するURLは、myZendApp.localhost/userのようになります。
私が言ったように、私はこの投稿から、またはルートディレクトリやアプリディレクトリ内、およびパブリックフォルダ内に.htaccessを作成するなど、他の多くの投稿から多くの解決策を試しました。多くの変更を加えた後、現時点では.htaccessファイルとindex.phpファイルは次のとおりです。
var / www / html / myZendApp / public / .htaccess:
RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other queries to index.php. The
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
/var/www/html/whately2.0/.htaccess
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule .* index.php
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/app/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/app/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ /public/index.php [NC,L]
/var/www/html/.htaccess
RewriteEngine On
RewriteBase /whately2.0/public
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ whately2.0/public/index.php [NC,L]
var / www / html / myZendApp / public / index.php:
<?php
chdir(dirname(__DIR__));
// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server') {
$path = realpath(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
if (__FILE__ !== $path && is_file($path)) {
return false;
}
unset($path);
}
require 'init_autoloader.php';
Zend\Mvc\Application::init(require 'config/application.config.php')->run();
また、以下のようにアプリのパブリックフォルダーを指す仮想ホストを作成しました:
<VirtualHost>
ServerName domain/myZendApp
DocumentRoot "/var/www/html/myZendApp/public"
Options Indexes FollowSymLinks
SetEnv APPLICATION_ENV "development"
<Directory "/var/www/html/myZendApp/public">
DirectoryIndex index.php
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
このソリューションも機能しませんでした。 (たとえば)ドメイン/ユーザーにアクセスしたい場合、404エラーが表示されます:要求されたURL/ユーザーがこのサーバーで見つかりませんでした。
今、私は本当にイライラしていて、私が行っていない他の解決策を見つけることができません。リモートホストのzendエンドポイントにアクセスする方法を誰かに教えてもらえればとてもありがたいです。また、ここで必要な情報が不足している場合はご容赦ください。さらに詳細が必要な場合はお知らせください。
よろしくお願いします。
更新: 以下のようにhttpd.confを編集した後(AllowOverrideNoneではなくAllowOverrideAll):
<Directory "/var/www/html/whately2.0/public">
AllowOverride All
allow from all
Options None
Require all granted
</Directory>
ドメインにアクセスしようとすると、次のエラーが発生します(403禁止):このサーバーで/にアクセスする権限がありません。 (許可は正しいと確信しています)
ドメイン/パーマリンクに再度アクセスしたい場合は、同じ403エラー。
「AllowOverrideAll」を追加する前に、zendスケルトンホームページを表示したドメインにアクセスできましたが、ドメイン/パーマリンク(ドメイン/ユーザーなどのデータベースからのクエリ)にアクセスしたい場合、エラー404が発生することに注意してください。< / p>
助けてください:私が何をしても、この問題は解消されません。また、次の行を追加しました:LoadModule rewrite_module modules / mod_rewrite.soをhttpd.confに追加して、モード書き換えを有効にします(通常、httpd.confファイルでこの行のコメントを解除することをお勧めしますが、見つからなかったため、そこにコード)
もう一度:誰か助けてください...
ありがとう
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。