2016-12-28 21 views
1

RewriteCondとRewriteRuleに問題があります。私は、フォームのURLを書き換えたい:mysub.mydomain.com/uploads/*をmysub.mydomain/mysub/uploads/*に書き直してください。

http://mysub.mydomain.com/uploads/image.png

にはhttp://mysub.mydomain.com/mysub/uploads/image.png

私AliasMatchよう:

AliasMatch "^/(.+)/uploads/(.*)$" "/var/www/html/test/client_files/$1/uploads/$2" 

は、適切なリソースへの要求を指示します。

これは私がこれまで持っているものです。

RewriteEngine On 
RewriteCond %{HTTP_HOST}     ^[^.]+\.mydomain\.com$ [NC] 
RewriteCond %{REQUEST_URI}     ^uploads/(.*)$ 
RewriteRule ^(.+)       %{HTTP_HOST}$1 [C] 
RewriteRule ^([^.]+)\.mydomain\.com(.*) %{HTTP_HOST}$1/$2 [L] 

それは動作しませんが。要求されたURLが見つからなかったというメッセージが表示されます。私がやっている書き換えを使って問題を解決する方法を教えてもらえますか?

UPDATE#1 私はhttpd.confファイルの仮想ホストでこれを使用しています。私は@ user2493235答えに基づいて動作するために次のを持っているが、私のAliasMatchは書き直し後に適用されていません。これは、書き換えられたURIにドキュメントルートを追加するだけです。

RewriteCond %{HTTP_HOST}  ^([^.]+)\.mydomain\.com$ 
RewriteRule ^(\/uploads\/.*)$  /%1$1 

私はAliasMatchのさまざまなバージョンを試してみて、それを別名に変更しました。書き換え後にAliasMatchを処理していないようです。

+0

私はUPDATEで、あなたの問題に対処するために私の答えを更新しました。 – SuperDuperApps

答えて

1

これはそれを行う必要があります。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ 
RewriteRule ^(/uploads/.+)$ /%1$1 [PT] 
+0

httpd.confファイルで仮想ホストを使用しています。私はあなたの答えに基づいて動作するには、私のAliasMatchは、書き換え後に適用されていないが、次のを持っている。これは、書き換えられたURIにドキュメントルートを追加するだけです。 – ermSO

+0

httpd.confファイルに仮想ホストを使用しています。私はあなたの答えに基づいて動作するには、私のAliasMatchは、書き換え後に適用されていないが、次のを持っている。これは、書き換えられたURIにドキュメントルートを追加するだけです。 mewomain \ .com $ RewriteRule ^(\ /アップロードする\ /.*)$ /%1 $ 1 'コード' – ermSO

+0

ごめんなさい、ありがとうございます。答えを更新し、 '[PT]'フラグを 'RewriteRule'に追加しました。これはうまくいけばそれを修正するはずです。 'AliasMatch'が設定の書き換えの前後にあるかどうかは実際には関係ありませんので、私の答えからその情報を削除しました。それが修正されるかどうか私に教えてください。 – SuperDuperApps

関連する問題