2015-04-08 5 views
2

Мы переместили наш сайт в субдомен, а на основном домене у нас появился новый сайт с новым URL-адресом. То, что мы пытаемся сделать, - это перенаправление старого url на субдомен, исключая новый url.htaccess перенаправить домен с строкой запроса на субдомен с исключениями

вот примеры старого URL,:

http://www.domain.co.il/index.php?dir=app_admin&page=ip_stat&op=list&pos=0

должен быть перенаправлен:

http://sub.domain.co.il/index.php?dir=app_admin&page=ip_stat&op=list&pos=0

Хотя новый сайт URL, (не содержат PHP) и на главной странице не должны .

Это то, что наш Htaccess выглядит следующим образом:

Это делает перенаправление URL, к югу, но не исключает новые страниц и перенаправить их на подобласти дом (sub.domain.com)

RewriteEngine on  
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [QSA,L] 

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

RewriteCond %{REQUEST_URI} !contact(|$) 
RewriteCond %{REQUEST_URI} !about(|$) 
RewriteCond %{REQUEST_URI} index\.php 
RewriteRule ^(.*)$ http://sub.domain.com [R=301,L] 

Надеюсь кто-то может помочь нам получить это право, мы получаем много 404 в нашем GWT Сейчас:/

Спасибо за любую помощь!

ответ

2

Зафиксирует регулярное выражение и изменить порядок правил:

RewriteEngine on  
RewriteBase/

RewriteCond %{THE_REQUEST} !/(contact|about) [NC] 
RewriteCond %{THE_REQUEST} !\.(jpe?g|gif|bmp|png|tiff|css|js) [NC] 
RewriteRule ^(.+)$ http://sub.domain.com/$1 [R=301,L,NE] 

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

тестирование Кроме того, это в новом окне браузера, чтобы избежать старого кэша браузера.

+0

Hi @anubhava, спасибо вам за помощь! Ваш код перенаправляет все на субдомен и не игнорирует страницы. – Doron

+0

все еще не работает :( – Doron

+0

кажется, что он работает, но я понял, что он перенаправляет новые файлы css и js сайта, чтобы он не загружался должным образом:/Я пытался написать правило, которое перенаправляет только в том случае, если url содержит php, но не может чтобы он вступил в силу. Я ответил на свой вопрос кодом, который у меня есть на данный момент – Doron

0

Вот полный код для сайта. Способ настройки - это то, что новый сайт вызывается из папки с именем «main», а старый сайт вызывается из корневого каталога. Итак, у нас есть 2 htaccess.

Вот код корень Htaccess:

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^/([^.]+)\.php 
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301] 

RewriteCond %{HTTP_HOST} www.domain.com$ 
RewriteCond %{REQUEST_URI} !^/main 
RewriteRule ^(.*)$ /main/$1 [L]  

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule .* - [L] 

RewriteRule ^admin$ index.php?dir=app_misc&page=login [L] 
RewriteRule ^admin/$ index.php?dir=app_misc&page=login [L] 

RewriteRule ^sitemap.xml$ sitemap.php [L] 
RewriteRule ^robots.txt$ robots.php [L] 

RewriteRule ^adv$ adv/index.php [L] 
RewriteRule ^adv/$ adv/index.php [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/(([0-9]+)_([^/]+)|([0-9]+))$ 
RewriteRule (.*) /404.php?a=%{REQUEST_URI} [L] 

и Htaccess в "главной" папке:

RewriteEngine on  
RewriteBase/

RewriteCond %{REQUEST_URI} !(contact|about) [NC] 
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L,NE] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [L] 

Я проверил на нескольких браузерах и в режиме инкогнито, а

Thanks

0

Вместо того чтобы исключать URL-адреса, которые вызвали необходимость css & js-файлов для перенаправления, я решил это, создав перенаправление, что только URL-адрес с php.

RewriteCond %{THE_REQUEST} ([^.]+)\.php [NC] 
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L,NE] 
Смежные вопросы