Что делает приведенный ниже код в.htaccess?

Может ли кто-нибудь сказать мне, что делает код ниже?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example-old.com$
RewriteRule (.*) http://www.example-new.com/$1 [R=301,L]

Это работает, только если кто-то печатает именно example-old.com? Что будет с URL-адресами с папками, такими как example-old.com/folder1 и example-old.com/folder1/sub1/page1.php

Один из сайтов моего клиента стал катастрофой. Ниже приведен код в.htaccess и страницах в поиске Google, когда он открывается, он добавляет дополнительный "/" в конце каждого URL, который отображает ужасную страницу. Я не могу понять, где ошибка в коде:

Options -Indexes
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example-old.com$
RewriteRule (.*) http://www.example-new.com/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^www.example-old.com$
RewriteRule (.*) http://www.example-new.com/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^example-new.com$
RewriteRule (.*) http://www.example-new.com/$1 [R=301,L] 

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

# remove browser bugs
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
RewriteCond %{HTTP_HOST} ^example-old\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example-old\.com$
RewriteRule ^2015\/?(.*)$ "http\:\/\/www\.example-old\.com\/$1" [R=301,L]

Вместо того, чтобы открыть страницу с URL: -

http://www.example-new.com/folder1/page1.php

Это открывает:

http://www.example-new.com/folder1/page1.php/

Я использую пример старый и пример новый по соображениям безопасности. Пожалуйста помоги...!

1 ответ

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example-old.com$
RewriteRule (.*) http://www.example-new.com/$1 [R=301,L]

Это постоянно перенаправляет example.com/foo/foobar в example-new.com/foo/foobar

RewriteCond %{HTTP_HOST} ^example-old.com$
RewriteRule (.*) http://www.example-new.com/$1 [R=301,L]

в контексте PHP вы бы использовали

if(host == "example.com" and Request_uri== "any request")
 {header('location : host/Request_uri',301)
else
{no redirection}
Другие вопросы по тегам