Перемещение сайта на поддомен, перенаправление .htaccess Apache - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть сайт по адресу http://example.com, он настроен на удаление .html (.php и т. Д.) В конце URL и предотвращает события горячей ссылки (кроме поисковых систем).

Я хочу создать многорегиональный сайт с подобластями, такими как http://us-en.example.com, и полностью переместить все с моего текущего сайта http://example.com на http://us-en.example.com.

У меня есть несколько вопросов относительно .htaccess файла:

Вопрос 1

Пример: У пользователя есть «чистая» ссылка, подобная этой, http://example.com/images/all/image1, но поскольку я перемещаю все, этот путь не содержит изображений, а не существует .

Как настроить файл конфигурации для перенаправления этого «чистого» URL-адреса в поддомен «по умолчанию» (us-en), от http://example.com/images/all/image1 до http://us-en.example.com/images/all/image1, но ничего не делать, если ссылка уже содержит поддомен?

Вопрос 2

Как правильно настроить файл .htaccess, чтобы все субдомены имели те же функции, что и исходный (удаление .html / .php и предотвращение горячей ссылки)?

Вопрос 3

Как сделать все это из приведенного ниже шаблона?

DirectoryIndex home.html

Options +MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)\.html$ /$1 [R=301,L]


Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_REFERER}     !^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g?|png)$ [NC]
RewriteCond %{HTTP_REFERER}     !^https?://([^.]+\.)?example\. [NC]
RewriteCond %{HTTP_REFERER}     !search\?q=cache                 [NC]
RewriteCond %{HTTP_REFERER}     !google\.                        [NC]
RewriteCond %{HTTP_REFERER}     !bing\.                          [NC]
RewriteCond %{HTTP_REFERER}     !yahoo\.                         [NC]
RewriteRule \.(gif|jpe?g?|png)$ - [F,NC,L]

1 Ответ

0 голосов
/ 11 сентября 2018

Во-первых, вам вообще не следует использовать .htaccess, если у вас есть доступ к файлам конфигурации apache (подробное объяснение смотрите здесь )

Q1:

в .conf:

<VirtualHost *:80>
  ServerName example.com
  Redirect / https://us-en.example.com/
</VirtualHost>

или (если вы не хотите использовать файлы .conf), поместите это поверх .htaccess:

RewriteEngine on
RewriteCond %{HTTP_HOST} =example.com
RewriteRule ^ https://us-en.example.com%{REQUEST_URI}

Что касается других вопросов, в ваших правилах нет ничего конкретного, что могло бы помешать их повторному использованию. Вам следует только изменить (при перемещении правил из .htaccess в конфигурацию VirtualHost)

RewriteRule ^(.*)\.html$ /$1 [R=301,L]

до

RewriteRule ^/(.*)\.html$ /$1 [R=301,L]

, поскольку в контексте VirtualHost шаблон будет изначально сопоставляться с частью URL после имени хоста и порта (и перед строкой запроса), поэтому вам нужно ввести / там

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...