Я нахожусь в сетевом решении VPS, четыре домена имеют общий доступ к IP. У меня установлен Rewrite/RewriteMap, который работает. Rewrite находится в файле для веб-адреса example.com в каталоге var/www/vhosts/example.com/conf/vhost.conf, а Rewrite является единственным в файле vhost.conf. Он не будет работать в главном файле httpd.conf для сервера.RewriteLock висит Apache при повторном запуске при добавлении в другую рабочую Rewrite/Rewritemap
RewriteMap использует пару вещей в URL-адресе, введенном пользователем (http://example.com/bb/cc), чтобы получить третью часть информации (aa) из соответствующей записи базы данных, использует эту третью часть информации в качестве строки запроса для загрузки файла и оставляет изначально введенный URL в адресной строке, показывая файл на основе строки запроса aa.
Вот Rewrite:
Options +FollowSymlinks
RewriteEngine on
RewriteMap newurl "prg://var/www/cgi-bin/examplemap.php"
RewriteRule ^/(Example/.*) ${newurl:$1} [L]
Когда я добавить следующий выше или ниже RewriteMap линии:
RewriteLock /var/lock/mapexamplelock
и пытаются повторно запустить Apache, он висит и Apache не будет перезапуск. Я пробовал разные пути к файлу (думая, что это может быть проблема с разрешениями и просто надеется, что это сработает, конечно), убрав исходный /, помещая его в кавычки, разные типы файлов (т. Е. .txt в конце), разные имена файлов , почти все, и каждый раз, когда он висит Apache при повторном запуске. Rewrite/RewriteMap работает без него, но я много читал о важности RewriteLock, а php выпускает предупреждения в журнале, заканчивающиеся в DANGEROUS, чтобы не использовать RewriteLock.
Вот карта (находится там, где Rewrite говорит):
#!/usr/bin/php
<?php
include '/pathtodatabase';
set_time_limit(0);
$keyboard = fopen("php://stdin","r");
while (1) {
$line = fgets($keyboard);
if (preg_match('/(.*)\/(.*)/', $line, $igot)) {
$getalias = mysql_query("select aa FROM `table`.`dbase` WHERE bb = '$igot[1]' && cc = '$igot[2]'");
while($row=mysql_fetch_array($getalias)) {
$arid = $row['aa'];
}
print "/file-to-take-load.php?aa=$arid\n";
}
else {
print "$line\n";
}
}
?>
Я посмотрел в главном файле httpd.conf и не могу ничего найти о RewriteLock, которые могут быть помехи. Это просто стандартная процедура настройки VPS.
Если у кого-то есть представление о том, почему это будет работать только без RewriteLock и возможного исправления, было бы весьма полезно.
Благодаря Greg
Что вы имеете в виду, "он выходит из строя Apache". Какую ошибку он производит? – larsks
Привет. После ввода этой строки кода Apache не будет перезапускаться и просто зависает, поэтому сайт не работает, пока я не удалю эту строку кода и не запустил Apache без этой строки Lock. – kidcobra
И еще, какие ошибки он производит? Apache редко выходит из строя без появления в журнале ошибок. – larsks