Обработка нескольких условий перезаписи (одно для реального и одно для сервера разработки) - PullRequest
1 голос
/ 20 декабря 2011

У меня есть сайт drupal 7.У меня есть живой сайт и сайт для разработки обновлений модуля.Живой сайт имеет связанное доменное имя, тогда как мой сайт разработчика использует IP-адрес: порт для доступа.Примерно так: www.customersite.com для live и 10.0.1.10:10091 для dev.

В файле .htaccess Drupal 7 есть код, который можно раскомментировать, чтобы к запросам, не относящимся к www, добавлялось "www."Тем не менее, я не хочу такого поведения при работе на IP-сайте.Как я могу создать правильное условие перезаписи для этого?

RewriteCond %{HTTP_HOST} !^www\. [NC]
#RewriteCond %{HTTP_HOST} ^10.0.1.10\. [NC] 
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Используйте разные .htaccess для жизни, тестирования, стадии, разработки и всего, что может произойти. В соответствующей системе просто скопируйте правильный

cp .htaccess-live .htaccess

Это также сделает вещи более простыми.

0 голосов
/ 20 декабря 2011

@ KingCrunch. Вот совершенно другой метод, который мне подходит, и мне просто нужно скопировать / вставить всю исходную папку, ничего не трогая, и он работает довольно хорошо.

Используйте двух разных vhosts: один для dev и один для prod. Два разных файла.

Первый продукт:

<VirtualHost *>

    ServerAdmin webmaster@mydomain.com
    DocumentRoot "/web/htdocs/mydomain/prod"

    ServerName mydomain.com
    ServerAlias www.mydomain.com

</VirtualHost>

Второй для разработчика:

<VirtualHost *>

    ServerAdmin webmaster@mydomain.com
    DocumentRoot "/web/htdocs/mydomain/dev"

    ServerName dev.mydomain.com

</VirtualHost>

И в моем файле hosts все они идут по одному и тому же IP. В моем Php-коде для доступа к базе данных я делаю что-то вроде:

if (isset($_SERVER['HTTP_HOST'])) {
  /* usual HTTP page */
  define('HOST', $_SERVER['HTTP_HOST']);
}
else {
  /* command line */
  define('HOST', 'command_line');
}
/* define db access depending on host: */
if (HOST == 'command_line') {
  /* command line */
  define( 'SQL_CNX_NOM_BD', 'mydomain_dev');
}
elseif ((mb_ereg('dev\.',HOST) !== false) ) { 
  define( 'SQL_CNX_NOM_BD', 'mydomain_dev');
}
elseif ((mb_ereg('mydomain',HOST) !== false) ) { 
  define( 'SQL_CNX_NOM_BD', 'mydomain_prod');
}
else {
  throw new Exception("unable to determine db ".
    "with this host: ".HOST);
}

Тогда мне просто нужно скопировать / вставить всю исходную папку, ничего не трогая, и она работает довольно хорошо.

...