2015-12-14 6 views
1

Не могли бы вы рассказать мне, что делает код ниже?Что делает указанный ниже код в .htaccess?

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

Работает ли это только в том случае, если кто-то набирает именно пример-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] 

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

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

Он открывает:

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

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

ответ

0
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}