3

.htaccess ファイルを使用して、タブレット トラフィックをタブレット用に最適化されたサイトにリダイレクトしたいと考えています。

通常の URL:waxxed.com.au タブレット向け URL:waxxed.com.au/tablet/

次のコードを試しましたが、うまくいきません。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ipad [NC]
RewriteCond %{HTTP_HOST} !^ipad\. [NC]
RewriteRule ^ http://waxxxed.com.au/tablet/ [L,R=301]

x3 質問...

  1. このコードは機能しません。ループを作成するように見えます。よくわかりませんが、以下に示す既存の .htaccess コードに関連している可能性があります。
  2. iPadだけでなく、すべてのタブレット(モバイルではない)をリダイレクトしたい. 他のタブレット ブランドをキャプチャするにはどうすればよいですか?
  3. 私の .htaccess コーディングをさらに最適化することをお勧めしますか?

現在の完全な .htaccess ファイル (動作します!)...

<IfModule mod_expires.c>
# Enable cache expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 1 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year”
</IfModule>

# force redirect of html to no-extension
RewriteCond %{THE_REQUEST} ^GET\s.+\.html
RewriteRule ^(([^/]+/)*[^/.]+)\.html$ http://waxxxed.com.au/$1 [R=301,L]

# www to non-www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.waxxxed.com.au
RewriteRule (.*) http://waxxxed.com.au/$1 [R=301,L]

# Redirect from / to non-/
RewriteEngine On
RewriteRule ^(.*)/$ $1 [R=301,NC,L]

# parse file as file.html
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(([^/]+/)*[^/.]+)$ $1.html [L] 

# refer not found content to 404 page
ErrorDocument 404 /404page.html
4

1 に答える 1

2

ループを作成する理由は、ホスト名が で始まっていないことを確認しているためです。ipadまた、にリダイレクトしているためwaxxxed.com.au、で始まることはありませんipad。代わりに、次で始まるリクエスト URI を確認し/tablet/ます。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ipad [NC]
RewriteCond %{REQUEST_URI} !^/tablet/. [NC]
RewriteRule ^ http://waxxxed.com.au/tablet/ [L,R=301]

#2 に関しては、他のタブレットのユーザー エージェントを検索する必要があります。一般的に、 「モバイル」ではなく「アンドロイド」を検索します。

RewriteCond %{HTTP_USER_AGENT} android [NC]
RewriteCond %{HTTP_USER_AGENT} !mobile [NC]
RewriteCond %{REQUEST_URI} !^/tablet/. [NC]
RewriteRule ^ http://waxxxed.com.au/tablet/ [L,R=301]

htaccess ファイルの残りの部分は、期待どおりの動作をしている限り問題ないように見えますが、本当に細かいことは何でも構いません。

于 2013-10-21T21:24:11.243 に答える