使用Apache处理外卡子域,不包括www,包括SEF

时间:2009-10-07 14:10:46

标签: apache mod-rewrite uri

处理外卡子域的问题有一个答案,但它不能满足我的所有需求。我需要做所有这些,例如假设域是 example.com

  1. 如果提供的域名为 www.example.com ,则应该301重定向到 example.com ,因为我不希望有重复的内容会创建搜索引擎存在问题。

  2. 如果域名为 anythingelse.example.com ,则应静默重定向到 example.com ,以便软件可以选择要求的子​​域名并采取相应措施

  3. 此外,域名之后的任何未引用实际文件或目录的规范都应重定向到 index.php (同样,软件会弄清楚它的含义) )。所以 anything.example.com/some/search/engine/friendly/specification 应重定向到 example.com/index.php

  4. 我可以将其中的一部分用于工作,但还没有完成整个过程。任何优惠!

1 个答案:

答案 0 :(得分:0)

请尝试以下规则:

# 1. rule
RewriteCond %{HTTP_HOST} =www.example.com
RewriteCond %{HTTPS} ^on(s)|
RewriteRule ^ http%1://example.com%{REQUEST_URI} [L,R=301]

# 2. rule
RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteRule ^ /absolute/filesystem/path/to/example.com%{REQUEST_FILENAME} [L]

# 3. rule
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]