Я пытаюсь создать mod_rewrite
правило так, чтобы, когда веб-страница www.mysite.com/blog
запрашивается страница из службы ведения блогов Tumblr загружается. Я настроил свой сайт Tumblr так, чтобы blog.mysite.com возвращал домен. В настоящее время, www.mysite.com/blog
перенаправляет на blog.mysite.com
. Я хочу www.mysite.com/blog
для отображения blog.mysite.com
и чтобы пользователь не знал о blog.mysite.com
. Я пробовал несколько разных подходов, чтобы добиться этого. Сначала я попытался использовать правило перезаписи:
RewriteEngine On # Turn on the rewriting engine
RewriteRule /blog/ http://blog.mysite.com/ [NC,P,L]
Затем «ProxyPass» (попытка 1)
ProxyPass /blog/ http://blog.mysite.com/
и попытка 2:
<Location /blog/>
ProxyPass http://blog.mysite.com/
</Location>
Затем я увидел еще один более сложный mod_rewrite
правило, которое я тоже пробовал:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite.com/blog$
RewriteCond %{REQUEST_URI} !/standard
RewriteRule ^(.*)$ http://blog.mysite.com$1 [R]
</IfModule>
Буду признателен за любой совет, как лучше всего это сделать.
Вы не упоминаете конкретные проблемы для каждого случая, но, по моему опыту, лучшее, что можно сделать при отладке RewriteRules, - это включить журнал перезаписи и поднять уровень перезаписи. Это отобразит входящий запрос, а также пройден / не пройден для каждого правила, а также то, что он делает с запросом, когда он соответствует правилу.
RewriteLog "/usr/local/var/apache/logs/rewrite.log"
RewriteLogLevel 3
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteloglevel
Не забудьте отключить это после того, как закончите, так как это приведет к снижению производительности, особенно на 3 и выше.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite.com/blog$
RewriteCond %{REQUEST_URI} !/standard
RewriteRule ^(.*)$ http://blog.mysite.com$1 [R]
</IfModule>
Это правило почти правильное, оно должно быть:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite.com$
RewriteCond %{REQUEST_URI} !/standard
RewriteRule ^(.*)$ http://blog.mysite.com$1 [R]
</IfModule>
Попробуй это.