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,您需要查找其他平板电脑的用户代理。一般来说,你想找到“android”而不是“mobile”:

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 回答