Обработка субдоменов с подстановочными знаками с помощью Apache, кроме www, включая SEF

Есть ответ на вопрос об обработке поддоменов с подстановочными знаками, но он не отвечает всем моим потребностям. Мне нужно сделать все это, предположив, например, что домен 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.

Я могу заставить часть этого работать, но еще не достиг всего этого. Любые предложения!


person user185631    schedule 07.10.2009    source источник


Ответы (1)


Попробуйте эти правила:

# 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]
person Gumbo    schedule 07.10.2009