У меня есть правило перенаправления .htaccess что пересылает агента из A.html к B.html используя следующий шаблон:
Redirect 301 /A.html http://mysite.com/B.html
Поскольку Redirect
Директива требует установить целевой хост, возможно ли, чтобы это правило преобладало только на определенном хосте? У меня есть и тестовый домен, и домен развертывания, и я хочу, чтобы он находился только в домене развертывания. Я могу установить условия HTTP для Rewrite
правила, но как я могу для HTTP Redirect
с?
Вы действительно можете это сделать, но потеряете код перенаправления 301.
SetEnvIfNoCase Host "myotherdomain.com" redirectthisdomain
<Files "A.html">
Order Deny,Allow
Deny from env=redirectthisdomain
ErrorDocument 403 http://mysite.com/B.html
</Files>
Я пришел к выводу, что с чистым Redirect
директивы. Если необходимо перенаправить посетителя в определенных условиях HTTP, необходимо использовать Rewrite
правила.
просто поместите правило перенаправления в конфигурацию vhost вашего домена развертывания. таким образом он будет активен только для этого хоста.
Мой сценарий: два домена (domain.org и domain.info), указывающие на один и тот же сайт, и я хочу, чтобы .info использовался вместо .org
Сайт написан на PHP и в самом начале каждой страницы есть что-то вроде этого
if (stristr($_SERVER['SERVER_NAME'], 'domain.org') === FALSE) {
// do standard initial operations
} else {
// insert here the code to rebuild the correct path and put it in $newpath
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.domain.info/$newpath");
}
Таким образом вы информируете как пользователей, так и сканер поисковых систем о вашей конфигурации.
Быстрый пример: если посетитель переходит на dev.example.com/A.html, он перенаправляется на B.html. Если они перейдут на www.example.com/A.html, они будут перенаправлены на C.html; оба с перенаправлением 301.
RewriteEngine on
RewriteCond %(HTTP_HOST) ^dev.example.com$ [NC]
RewriteCond %(REQUEST_URI) ^/A.html
RewriteRule ^(.*)$ http://dev.exmaple.com/B.html [R=301]
RewriteCond %(HTTP_HOST) !^dev.example.com$ [NC]
RewriteCond %(REQUEST_URI) ^/A.html
RewriteRule ^(.*)$ http://dev.exmaple.com/C.html [R=301]
Вы можете узнать больше о Mod_Rewrite в Apache интернет сайт.