Я ответил на свой собственный вопрос с "inotify поиска конфетки". Это назвало lsyncd, и это размещается на коде Google.
К сожалению, похоже, что это всегда выполняет полный rsync сначала, таким образом, все еще не помогло бы мне, если бы мой компьютер не был включен больше 14 часов за один раз.
Lsyncd использует rsync для синхронизации локальных каталогов с удаленной машиной, работающей rsyncd. Lsyncd наблюдает несколько деревьев каталогов через inotify. Первый шаг после добавления часов является к rsync всеми каталогами с удаленным хостом и затем синхронизирующим единственным файлом путем сбора inotify событий. Таким образом, lsyncd является легким живым зеркальным решением, которое должно быть легко установить и использовать при смешивании хорошо с системой. См., что lsyncd - помогают для подробных параметров командной строки.
(Я не попробовал Ваше второе предложение, но я зафиксировал его), Некоторое СВОБОДНОЕ Знание Сотрудникам Google там: вопросы версии Apache! Когда Вы сканируете через документацию, УДОСТОВЕРЬТЕСЬ, что Вы видите материал для версии Apache, которую Вы имеете.
Моя проблема состояла в том, что я использовал PLESK для всего. Этот блок на vhost.conf:
<IfModule mod_rewrite.c>
RewriteEngine On
# Rewrite /foo/bar/ to /foo/bar/index.php
RewriteRule /([^.?]+)/$ %{REQUEST_URI}index.php [L]
# FIX: If request_uri is just the domain name, then redirect to index.php.
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule /(.*) %{REQUEST_URI}/index.php [L]
# Rewrite /foo/bar to /foo/bar.php
RewriteRule /([^.?]+)$ %{REQUEST_URI}.php [L]
# Return 404 if original request is /foo/bar.php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* /error [L,R]
</IfModule>
работал как очарование.
НО на CentOS/Apache 2 это просто не сделало. Проблемой была наклонная черта вначале и auto-trailing-slash-adding Apache (подарок от более новых версий). Этот auto-trailing-slash-adding не был woprking, когда сценарий был именем / файл и было, и dir назвал/file/. Таким образом, я добавил эти 2 строки:
<IfModule mod_rewrite.c>
RewriteEngine On
**DirectorySlash Off**
# Rewrite /foo/bar/ to /foo/bar/index.php
RewriteRule **^/?**([^.?]+)/$ %{REQUEST_URI}index.php [L]
# FIX: If request_uri is just the domain name, then redirect to index.php.
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule **^/?**(.*) %{REQUEST_URI}/index.php [L]
# Rewrite /foo/bar to /foo/bar.php
RewriteRule **^/?**([^.?]+)$ %{REQUEST_URI}.php [L]
# Return 404 if original request is /foo/bar.php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* /error [L,R]
</IfModule>
Насколько прохладный это?
Это может получить Вас немного ближе:
RewriteRule ^([^.?]+)(.*)$ $1.php$2 [L]
но кто-то еще может, вероятно, обеспечить что-то лучше.
Попробуйте этого:
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/?[^.]+)$ $1.php?%1 [L]
Если все, что Вы пытаетесь сделать, скрывают расширение файла от URL, почему Вы просто не включаете опцию "MultiViews" для пути? Я обычно делаю это на моих веб-сайтах, таким образом, я могу смешать .html и .php страницы, но упустить расширение из URL.
Если у Вас есть "AllowOverride Все" или "Опции AllowOverride", настроенные для Вас веб-страница, можно просто добавить .htaccess файл со следующим:
Options +MultiViews
Это включит MultiViews, и Apache будет использовать согласование MIME для нахождения доступного файла в пути, или если Вы имеете полный контроль над конфигурационным файлом Apache, можно просто добавить "Мультипредставления" к строке "Опций" в конфигурационном файле.
Если Вы хотите видеть пример, можно проверить мой URL политики GPG по http://undergrid.net/legal/gpg, который является, работал полностью от моей/legal/gpg.php страницы.