2016-11-16 8 views
1

私はフォルダテストを持っています。人がフォルダテストに移動すると、ブラウザに新しいものを表示させたい。.htaccess RewriteRule PHPリダイレクトフォルダ

新しいフォルダはサーバー上に存在しません。新しいものとして表示するだけで、サーバー上のフォルダテストにリンクされます。

これは私の設定(HTTPD-vhosts.conf)である:

<VirtualHost server.com> 
    DocumentRoot "c:/www/" 
    ServerName server.com 
    Alias /new "c:/www/test" 
    <Directory "c:/www/"> 
     Options +Indexes +Includes +FollowSymLinks +MultiViews 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost> 

だから、誰かが閲覧した場合に、明確にする:

  • server.com/test(サーバーフォルダを使用しています(サーバーと同じですが、ブラウザにはserver.com/newが表示されています)
  • server.com/index.phpサーバーは、フォルダtからindex.phpを使用しますest、ブラウザにはserver.com/new/index.phpが表示されます
  • server.com/test/index.php(上記と同じです)
  • server.com/test/folder2/index.php?variable=1サーバはフォルダtest/folder2からindex.phpを使い、変数をphpファイルに渡します。ブラウザはserver.com/new/folder2/index.php?variable=1を表示します)

私は別の.htaccess書き換えを試みましたが、動作させることができません。

エイリアスを使用する必要はありませんか?

私はそれを読んだが、それは仕事を得ることができないのでちょうど...、私に

答えて

1

あなたがAliasを必要としないが、Apacheのマニュアルへのリンクを与えてはいけませんこれはとてもコメントアウト:

Alias /new "c:/www/test" 

は、これらのルールを持っている:

<VirtualHost server.com> 
    DocumentRoot "c:/www/" 
    ServerName server.com 

    <Directory "c:/www/"> 
     Options +Indexes +Includes +FollowSymLinks +MultiViews 
     AllowOverride All 
     Require all granted 
    </Directory> 

    DirectoryIndex index.php 
    RewriteEngine On 

    RewriteRule ^/?$ /new/ [L,R=301] 

    RewriteCond %{THE_REQUEST} \s/+test(\S*)\s [NC] 
    RewriteRule^/new%1 [R=301,NE,L] 

    RewriteRule ^/?new(/.*)?$ /test$1 [L,NC] 

</VirtualHost> 
+0

私は、私が思うに、あなたは別のタイムゾーンでごめんなさい私の遅い返事のために。私はそれをテストしているが、私はまだ何か間違っていると思う。もう少し試してみましょう。私は500エラーが発生しています。 –

+0

さて、それはトリックでした!私がserver.comに行くと、それはまだserver.com/newにリダイレクトされません。 BtwはR = 301がそこになければならないのですか?これは永続的なリダイレクトを意味します。 QSAを追加する必要はありません(リクエストから置換されたURLにクエリ文字列を追加する必要もありますか?) –

+1

ok私の更新されたルールをもう一度試してください – anubhava