使用mod_rewrite来提供页面的移动版本

时间:2010-08-03 19:54:55

标签: apache .htaccess mod-rewrite

我正在尝试向现有网站添加可选的移动布局。在某些情况下,我希望能够为移动版本提供完全不同的内容,而不是普通版本的同一页面。如果用户访问m.example.com/food/apple.html,他会看到与example.com/food/apple.html完全不同的页面,没有m。子域。具体来说,我希望能够在目录中创建单独的apple.html和apple.mobile.html文件,如果用户在m中,则使用mod_rewrite来提供移动版本而不是常规版本。子域。但是,并非每个页面都有单独的移动版本,因此在尝试提供移动版本之前,我需要先检查以确保移动版本确实存在。

这可能吗?我试过这个:

RewriteCond %{SERVER_NAME} ^m\.
RewriteCond $1.mobile.html -f
RewriteRule (.*)\.html $1.mobile.html [L]

......但它似乎不起作用。具体来说,第二个RewriteCond不匹配。我想我可能需要给它一条绝对的道路。但如果是这样,我怎么能在插入“.mobile”部分时这样做呢?如果没有,我做错了什么?

1 个答案:

答案 0 :(得分:1)

对于-f检查,您需要一个像您想象的绝对路径。在您的情况下,这似乎不应该是一个大问题,因为您可以使用%{DOCUMENT_ROOT}

RewriteCond %{SERVER_NAME} ^m\.
RewriteCond %{DOCUMENT_ROOT}/$1.mobile.html -f
RewriteRule (.*)\.html $1.mobile.html [L]