私は古いものを置き換えることになっている新しいウェブサイトに取り組んでいます。新しいウェブサイトはPhalconを使用し、独自のルーティングシステムを使用しています。新しいウェブサイトは、前のものと同様にwww.mydomain.com
を使用してアクセスできます。新しいWebサイトのDocumentRootは/var/www/mydomain-www
、古いものは/var/www/mydomain-platform
です。別のドキュメントルートに書き直してください
この「プラットフォーム」の中には、他の多くのアプリケーション(iOSとAndroidアプリを含む)が使用しているいくつかの「Webサービス」があります。残念ながら、新しいWebサイトでもこれらのWebサービスを使用する必要があります。 :-(
基本的にAPIコールごとにPHPファイルがあり、これらのファイルはすべて古いWebサイトのルートにあります。具体的には/var/www/mydomain-platform
です。わかりましたが、それに対処する必要があります。 。それは、古いWebサイトのルートで右PHPファイルに、また、すべての単一のAPI呼び出しの書き換えルートが含まれている.htaccess
ファイルがあります彼らは次のようになります。私はすべて書き換えるための方法を見つける必要がある
RewriteRule ^ws/event/games(.*)$ /ws_events.php$1
RewriteRule ^ws/favourites/list(.*)$ /ws_teams_favorites.php$1
www.mydomain.com/ws/(.*)
のURLは/var/www/mydomain-platform/ws
です。なぜなら、Webサービスのファイルはそこにあり、私は本当に新しいWebサイトのルートディレクトリに移動したくないからです。
私はディレクトリ/var/www/mydomain-platform/ws
を指すシンボリックリンクvar/www/mydomain.www/ws
を作成すると思ったが、私はそれが/var/www/mydomain/public
にすべてをリダイレクトするため、以下のバーチャルホストの設定は、それを好きではないと確信しています。
私はこれらのリダイレクトの内容を.htaccessの中に入れたいと思います。
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAdmin [email protected]
DocumentRoot "/var/www/mydomain-www"
ErrorLog "${APACHE_LOG_DIR}/www.mydomain.com-error_log"
CustomLog "${APACHE_LOG_DIR}/www.mydomain.com-access_log" common
AllowEncodedSlashes On
AddDefaultCharset UTF-8
<Directory /var/www/mydomain-www>
AuthType None
AllowOverride all
Require all granted
<IfModule rewrite_module>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule ((?s).*) public/$1 [B,NE,L]
</IfModule>
</Directory>
<Directory /var/www/mydomain-www/public>
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((?s).*)$ index.php?_url=/$1 [B,NE,QSA,L]
</IfModule>
</Directory>
<FilesMatch "(?i)\.php$">
Require all denied
</FilesMatch>
<FilesMatch "index\.php$">
Require all granted
</FilesMatch>
</VirtualHost>
が、私は、固定されています:そして、あなたは前に
/ws/
で何かをスキップする/var/www/mydomain-www
にルールを変更する必要があり 'のRewriteRule(^(/ WS2/| WS3 /)?!? 。*)public/$ 1 [B、NE、L] '。外部取得グループである必要があります。そうでないと、URLは 'public/$ 1'に転送されません。またフラグは '[B、NE、L]'でなければなりません。 – nounありがとう、私はあなたのコメントに応じて私の答えを更新しました。 – anubhava