Перенаправление с сайта тестирования на сайт производства - PullRequest
0 голосов
/ 07 февраля 2012

Так что, если посетитель находится на сайте тестирования http://testing.site.com/app/article/123qwag, как я могу перенаправить его на ту же статью, но в домене основного приложения: http://www.app.com/article/123qwag

Кроме меня, который я буду идентифицировать себячерез пару ips (динамические).Какой лучший способ сделать это, php или .httacces ?

Любые предложения?

Редактировать:

Примечание: я использую codeigniter Framework

, который перенаправляет меня на www.app.comindex.php

EDIT2 Хорошо, вот некоторыемоего .htaccess (в сочетании с: https://github.com/h5bp/html5-boilerplate/blob/master/.htaccess)

Это .htaccess прекрасно работает для меня, спасибо за вашу помощь с перенаправлением

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^app.com$
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteCond %{HTTP_HOST} (.+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
#  RewriteCond %{HTTPS} on
#  RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

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

# RewriteBase equivalent - Localhost
RewriteCond %{HTTP_HOST} !^localhost$
RewriteRule . - [E=REWRITEBASE:/codeigniter-app/]

# RewriteBase equivalent - Development
RewriteCond %{HTTP_HOST} ^testing.app.com$
RewriteRule . - [E=REWRITEBASE:/app/]

# RewriteBase equivalent - Development
RewriteCond %{HTTP_HOST} ^www.app.com$
RewriteRule . - [E=REWRITEBASE:/]

# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ %{ENV:REWRITEBASE}index.php?/$1 [L]

#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ %{ENV:REWRITEBASE}index.php?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %{ENV:REWRITEBASE}index.php?/$1 [L]
#RewriteRule ^(.*)$ /index.php?/$1 [L]
</IfModule>

Ответы [ 3 ]

3 голосов
/ 07 февраля 2012

Этот в .htaccess вашего поддомена тестирования должен работать:

RewriteEngine on
RewriteBase /app
RewriteCond %{REMOTE_ADDR} !=123\.45\.67\.[8-9]
RewriteRule (.*) http://www.app.com/$1 [R=301,L]

Это включает RewriteEngine, устанавливает его базовый путь к папке /app и когда IP делаетне соответствует 123.45.67.8/9 перенаправить все туда с HTTP 301 на www.app.com и добавляет папку.

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

Я бы использовал mod_rewrite, потому что он обрабатывается непосредственно на сервере, поэтому быстрее.

1. решение mod_rewrite

Вы можете использовать следующие операторы в своих .htaccess на перенаправлении пользователя на www.app.com :

RewriteEngine On
RewriteBase /app
RewriteCond %{HTTP_HOST} ^testing.app.com$
RewriteCond %{REMOTE_ADDR} !=12.34.56.78
RewriteCond %{REMOTE_ADDR} !=12.34.56.79
RewriteRule ^(.*)$ http://wwww.app.com$1 [R=301,NC]

Почему мы используем перенаправление 301 здесь? Потому что в противном случае Google может поместить ваш тестовый сайт в индекс. Подробности смотрите здесь: Google и перенаправления 301 . Это также проверяет ваш IP.

Пожалуйста, убедитесь, что загружен mod_rewrite. На многих серверах он не активирован по умолчанию.

2. Решение PHP

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

<?php
if($_SERVER['REMOTE_ADDR'] != "12.34.56.78" && $_SERVER['REMOTE_ADDR'] != "12.34.56.79") { // Your IPs
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.app.com/".str_replace("/^\/app/","",$_SERVER['REQUEST_URI']));
}
0 голосов
/ 07 февраля 2012

Используйте этот код в вашем .htaccess uner DOCUMENT_ROOT

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^testing\.site\.com$ [NC]
RewriteRule ^(app)/(article/(.*))/?$ http://www.$1.com/$2 [NC,L,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...