RewriteRule в .htaccess - PullRequest
       1

RewriteRule в .htaccess

0 голосов
/ 08 февраля 2012

Я хотел бы изменить ссылку "http://blog.test.com/" на" http://www.test.com/blog/".

Я попробовал следующий код в моем .htaccess

RewriteRule ^blog.test.com?$ test.com/blog [NC,R=301,L]

Я что-то пропустил?Спасибо

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Если вы используете apache, вам нужно сопоставить хост-часть URL (например, blog.test.com) в RewriteCond:

RewriteCond %{HTTP_HOST} ^blog.test.com$ [NC]
RewriteRule ^(.*)$ http://www.test.com/blog/$1  [R=301,L]
1 голос
/ 08 февраля 2012

Прежде всего, вы должны заменить http://blog.test.com/whatever_or_empty на http://www.test.com/blog/whatever_or_empty в ваших HTML-ссылках.

blog.test.com, хотя поддомен, это другой URL.т.е. когда RewriteRule выполняет перезапись на другой URL, произойдет внешнее перенаправление.Это будет отражено в браузере.Быть временным redirect(302(the default)) или permanent redirect(301).

Таким образом, использование перезаписи URL для изменения ссылки http://blog.test.com/ на http://www.test.com/blog/ бесполезно.


Хотя вы можете достичьэто с использованием Apache Module mod_proxy .

Модули прокси-сервера Apache имеют следующие параметры:

  • mod_proxy: основной модуль занимается инфраструктурой и настройкой прокси-сервера и управляет запросом прокси.
  • mod_proxy_http:Это обрабатывает выборку документов с HTTP и HTTPS.
  • mod_proxy_ftp: Это обрабатывает выборку документов с FTP.
  • mod_proxy_connect: Это обрабатывает метод CONNECT для безопасного (SSL) туннелирования.
  • mod_proxy_ajp: это обрабатывает протокол AJP для Tomcat и аналогичных внутренних серверов.
  • mod_proxy_balancer реализует кластеризацию и распределение нагрузки по нескольким внутренним серверам.
  • mod_cache, mod_disk_cache, mod_mem_cache: они связаны с управлением кешем документов,Для включения кэширования требуется mod_cache и один или оба из disk_cache и mem_cache.
  • mod_proxy_html: переписывает HTML-ссылки в адресное пространство прокси.
  • mod_xml2enc: поддерживает интернационализацию (i18n) от имени mod_proxy_htmlи другие модули фильтрации разметки.пробел.
  • mod_headers: изменяет заголовки HTTP-запросов и ответов.
  • mod_deflate: согласовывает сжатие с клиентами и бэкэндами.

Вам нужнопо крайней мере mod_proxy и mod_proxy_http модули включены для работы прокси:

у вас должны быть строки, подобные этим в файле conf вашего апача:

LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_module modules/mod_proxy.so

используйте этов вашем Virtualhost из http://www.test.com

ProxyPass /blog http://blog.test.com
ProxyPassReverse /blog http://blog.test.com
ProxyRequests On
ProxyVia On

<Proxy *>
Order allow,deny
Allow from all
</Proxy>

Определения:


Вы также можете использовать кэш с mod_cache: mod_cache.
Подробнее о кэшировании см. Здесь: mod_cache Документы Apache .

...