2017-02-20 36 views
0

Я работаю на многоязычной странице, но имею одну проблему с поддоменами.PHP-редирект субдомена в основной домен

Я хочу использовать url en.example.com, и я хочу прочитать все с example.com/index.php (и установить изображение, CSS-root как example.com). Но в браузере я хочу по-прежнему URL en.example.com и все данные прочитаны от example.com и не может установить или изменить какой-либо относительный путь для изображений, включает в себя CSS ... Потому что теперь у меня есть один url для большего количества языков (установлен в сеансе и файлы cookie), и это не очень хорошее решение для google. И я хочу изменить его с минимальным воздействием на код.

возможно? например htaccess или другим способом? Спасибо за ответ.

Роман

добавить:

я стараюсь

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^en.example.com$ [OR] 
    RewriteCond %{HTTP_HOST} ^www.en.example.com$ 
    RewriteRule (.*)$ http://www.example.com/$1 [R=301,L] 
</IfModule>  

, но это изменение кода адреса URL.

спасибо за помощь

+0

'htacees', если вы имеете в виду' htaccess', то да. htaccess может перенаправить без изменения URL-адреса в браузере. – JustOnUnderMillions

+0

Да, я имею в виду htaccess (извините за английский). – Roman

ответ

0

mod_rewrite помогает с двумя вещами, переписать и перенаправлять.

  • Он называется переписывать, когда запрос изменяется внутренне, без уведомления клиента.
  • Он называется перенаправлением, когда запрос изменен и клиент уведомлен, чтобы извлечь ресурс из другого места.

Запрос перенаправляется в двух случаях

  • в RewriteRule уже приложил R|redirect флаг, как и в

    RewriteRule (.*)$ http://www.example.com/$1 [R=301,L] 
    
  • или когда RewriteRule «ы целевой URL-адрес является абсолютным URL- указывая на другой хост, например когда запрос на en.example.com и цель

    RewriteRule (.*)$ http://www.example.com/$1 [L] 
    

Так что, если вы хотите сохранить требуемый URL неизменным в браузере, вы не должны использовать R флаг, и вы не должны изменить хост-часть.

Если вам действительно нужно отобразить удаленный сервер, вы можете попробовать P|proxy флаг

RewriteRule ^(.*)$ http://www.example.com/$1 [P] 

Для этого на работу, mod_proxy модуль должен быть включен.

Обратите внимание также на предупреждение производительности

предупреждение Производительность
Использование этого флага вызывает использование mod_proxy, без обработки стойких соединений. Это означает, что производительность вашего прокси-сервера будет лучше, если вы установите его с ProxyPass или ProxyPassMatch

+0

Я пробовал, но он работает неправильно. Url всегда менялся на www.example.com – Roman

0

я попробовать

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^en.example.com$ [OR] 
    RewriteCond %{HTTP_HOST} ^www.en.example.com$ 
    RewriteRule (.*)$ http://www.example.com/$1 [L] 
</IfModule> 

но всегда изменить URL, чтобы http://www.example.com от www.en.example.com

1

Вы, вероятно, просто хотите включить php-файл с другого виртуального хоста:

<?php 
require '../../example.com/public_html/index.php'; 
?> 

Это позволит вам что угодно, но это не всегда возможно в зависимости от вашей конфигурации виртуального хоста. Этот пример должен работать, если вы используете все домены под одним и тем же пользователем DirectAdmin.

+0

Я пробовал его как первый, но проблема в относительном пути к изображениям и файлам css. – Roman

+0

Используйте абсолютные пути для файлов активов или используйте base href. – vinz

+0

Вы также можете символизировать каталог ресурсов. Это немного грязно, но экономит много изменений в работе и предотвращает дополнительные HTTP-запросы, вызванные перенаправления htaccess. – vinz

 Смежные вопросы

  • Нет связанных вопросов^_^