2017-01-27 6 views
1

私は古いものを置き換えることになっている新しいウェブサイトに取り組んでいます。新しいウェブサイトは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> 

答えて

1

あなたは/var/www/mydomain-wwwディレクトリへwsフォルダを移動したり、新しいディレクトリにシンボリックリンクを作成することができます。実際には正規表現がうまくいきませんでした

<Directory /var/www/mydomain-www> 
    AuthType None 
    AllowOverride all 
    Require all granted 

    <IfModule rewrite_module> 
     RewriteEngine on 
     RewriteRule ^$ public/ [L] 
     RewriteRule ^/?((?!ws2/|ws3/).*)$ public/$1 [B,NE,L,NC] 
    </IfModule> 
</Directory> 
+0

が、私は、固定されています:そして、あなたは前に/ws/で何かをスキップする/var/www/mydomain-wwwにルールを変更する必要があり 'のRewriteRule(^(/ WS2/| WS3 /)?!? 。*)public/$ 1 [B、NE、L] '。外部取得グルー​​プである必要があります。そうでないと、URLは 'public/$ 1'に転送されません。またフラグは '[B、NE、L]'でなければなりません。 – noun

+0

ありがとう、私はあなたのコメントに応じて私の答えを更新しました。 – anubhava

関連する問題