私はこのQ & A:How to write "if...else" mod_rewrite statements in .htaccessから、Ifステートメントを.htaccessでは実装できますが、Apache 2.4以上であることを知りました。共有ホスティング環境のApache 2.2.29の.htaccessにIf..Then..Elseを使用する方法はありますか?
私はこのQから学んだ& A:htaccess if statement、どのようにipmlement Ifステートメントは2.4未満のバージョンのApache用です。 @julpの答えは私の問題をほぼ解決しますが、私はShared Hostingで「追加すること」をすることは許されていないと思います。
環境ホスティング共有上のApache 2.2.29上の.htaccessにIf..Then..Elseを使用する任意の回避策はありますか?
更新:
@Thakkieによって指示されたように、私は私の特定の要件を追加しています。
1つの共有ホスティングアカウントから2つのドメインをホストしようとしています。次のように私の.htaccessファイルは、次のとおりです。
<If “%{HTTP_HOST} == ‘domain2.com’”>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule^domain2.com-directory/domain2-index.php [QSA,L]
</IfModule>
</If>
<Else>
RequestHeader set X-Prerender-Token "<MyToken>"
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www.domain1.com/domain1-index.php$ [NC]
RewriteRule ^(.*)$ https://www.domain1.com/domain1-index.php$1 [R=301,L]
<IfModule mod_proxy_http.c>
RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
# Only proxy the request to Prerender if its a request for HTML
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(.*) http://service.prerender.io/https://%{HTTP_HOST}/$2 [P,L]
</IfModule>
# Transfers to www.domain1.com when domain1.com is entered
RewriteCond %{HTTP_HOST} ^domain1.com$ [NC]
RewriteRule ^(.*)$ https://www.domain1.com/$1 [L,R=301]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule^- [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^domain1.com-directory/domain1-index.php [QSA,L]
</Else>
私はdomain1.comと<If><Else>
を使用してHTTP_HOST
に応じて、domain2.comするための動作の別のセットのための動作の一セットを割り当てています。
Apache 2.4を実行している私の友人の専用サーバーで上記の.htaccessファイルを試してみました。
残念ながら、私の共有ホスティングアカウントプロバイダはApache 2.2.29を実行しているため、<If></If>
と<Else></Else>
はサポートされていません。
私の状況では<If><Else>
の回避策は何ですか?
2.2では、ELSEディレクティブは使用できません。それらを使うにはapache 2.4+が必要です。 – starkeen
@starkeenはい、わかりました。しかし、回避策はありますか? – Raja
正確かつ完全な説明と例を掲載する必要があります。回避策は、ニーズに応じて決まるためです。 – Thakkie