2017-11-28 17 views
5

動的コンテンツと静的コンテンツをWebアプリケーションの異なるサブドメインに保存しますが、最近呼び出された場合、動的コンテンツを静的サブドメイン(www 。)またはサブドメインがまったくありません。htaccess内の特定のサブドメインまたはサブドメインを除外しないRewriteRule


URL構造:

http(s)://(subdomain).(domain).(tld)/(static page) OR (direct/random hash) OR (secure/random hash) 

すべての静的コンテンツは動的なコンテンツは、Webアプリケーションを通して見たが、このような

http(s)://www.domain1.com/about 
http(s)://www.domain1.com/ 
http(s)://www.domain2.com/about 
http(s)://www.domain2.com/ 

としての私のSEOフレンドリーなドメインになり、 "WWW" を介してアクセス可能です

http(s)://dynamic1.domain1.com/direct/randomhash 
http(s)://dynamic2.domain1.com/direct/randomhash 
http(s)://dynamic1.domain2.com/direct/randomhash 
http(s)://dynamic2.domain2.com/direct/randomhash 
などのドメインからアクセスされます。 210

これが私の現在の.htaccessファイル

URIは、index.phpファイルに任意のファイル拡張子だけでなくsecureまたはdirectで始まるダイナミックリンクを書き換えるためのルールがあります。

Header set Connection keep-alive 
<IfModule mod_dir.c> 
    DirectorySlash Off 
</IfModule> 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^index.php - [L] 
    RewriteRule ^(secure|direct) /index.php [L] 
    RewriteCond %{REQUEST_URI} !^/server-status 
    RewriteCond %{REQUEST_URI} !^/public/cache 
    RewriteRule !\.(png|gif|css|jpg|zip|js|html|htm|swf|ico|fon|ttf|otf|svg|woff|woff2|eot)$ /index.php [L] 
</IfModule> 

上記は、現在取り組んでいるが、私の問題は、ユーザーが単にWWWへの動的コンテンツのために使用されるものからサブドメインを変更した場合、それはまだ動作しますし、私のSEOフレンドリーからアクセス可能な動的なコンテンツをもたらすことですサブドメイン。

私はこのルールRewriteRule ^(secure|direct) /index.php [L]を編集できるように、アクティブなwww.サブドメインが存在する場合、またはサブドメインが一緒に存在しない場合は除外され、ドメインまたはサブドメインが他のものであれば動作します。

サブドメインが、私は RewriteRule ^(secure|direct) /index.php [L]%{HTTP_HOST}を追加し、任意のサブドメインを許可するように正規表現を使用する必要がありますと仮定してい www.


でない限り、サブドメインまたはドメインはまだワイルドカードだろうと言うことです

、domain、およびtldがありますが、httpホストがWWWで始まる場合は除外する方法がわかりません。サブドメインがまったくない

securedirectのパスは、www.経由で表示することも、サブドメインを使用せずに他のサブドメイン/ドメインで表示することもできません。

+0

'RewriteCond'で' www.'をチェックしようとしましたか? – Cole

+1

ちょうどsidenoteとして、 'png | gif | css | jpe?g | zip | js | html?swf | ico | fon | [ot] tf | svg | woff2?eot'はあなたの現在の正規表現'jpeg'も可能です。 – ctwheels

+0

'/ secure'と'/direct'はメインドメイン(wwwとwwwのないドメイン)からのみ許可されるべきですか? – anubhava

答えて

6

あなたは使用することができます。彼らはあなただけは一致したサブドメインではなく、WWWから来ているように

RewriteCond %{HTTP_HOST} ^(?:www\.)?[^.]+\.[^.]+$ [NC] 
RewriteRule ^(secure|direct) /index.php [L] 
+0

@JeremyJones質問を理解していないので、これらのクエリはターゲットページではなくインデックスページにリダイレクトされます。 – Croises

3

あなたは、「安全な」と「直接」のリクエストを処理するルールに条件を追加する必要があります1。

RewriteCond %{HTTP_HOST} ^dynamic[0-9]+\.[a-z]+ 
RewriteRule ^(secure|direct) /index.php [L] 

このように、そのルールに一致するサブドメインを持つリクエストのみがPHPスクリプトに書き換えられます。ユーザーがサブドメインをwwwに戻すか、条件で指定したパターンと一致しない他のものに変更すると、要求はPHPスクリプトには反映されません。

動的サブドメインの名前が本当にランダムである場合は、「www」が一致しないように、他のものを使用してください。たとえば、少なくとも4文字以上パターンは機能します:

RewriteCond %{HTTP_HOST} ^[^.][^.][^.][^.]+\. 
RewriteRule ^(secure|direct) /index.php [L] 

文字列 'www。 4つ以上の非ドットで始まり、次にドットで始まるパターンと一致しない。