ПРАВИЛО MOD_REWRITE-L-R

Я ответил на свой собственный вопрос с "inotify поиска конфетки". Это назвало lsyncd, и это размещается на коде Google.

К сожалению, похоже, что это всегда выполняет полный rsync сначала, таким образом, все еще не помогло бы мне, если бы мой компьютер не был включен больше 14 часов за один раз.

Lsyncd использует rsync для синхронизации локальных каталогов с удаленной машиной, работающей rsyncd. Lsyncd наблюдает несколько деревьев каталогов через inotify. Первый шаг после добавления часов является к rsync всеми каталогами с удаленным хостом и затем синхронизирующим единственным файлом путем сбора inotify событий. Таким образом, lsyncd является легким живым зеркальным решением, которое должно быть легко установить и использовать при смешивании хорошо с системой. См., что lsyncd - помогают для подробных параметров командной строки.

0
задан 6 July 2009 в 00:57
3 ответа

(Я не попробовал Ваше второе предложение, но я зафиксировал его), Некоторое СВОБОДНОЕ Знание Сотрудникам 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>

Насколько прохладный это?

1
ответ дан 4 December 2019 в 23:30
  • 1
    Двойные звездочки предназначаются, чтобы быть полужирными? Поскольку они don' t работают в блоке кода здесь и мне don' t думают it' s часть переписать синтаксиса. Кроме того, вопросительные знаки в квадратных скобках don' t служат любой цели, так как строка запроса не является частью шаблона, искавшего в RewriteRule. (Другие вопросительные знаки, конечно, действительно имеют значение как 0 или 1 квантор). BTW, возможно, было полезно, если бы Вы отправили целый подшипник в Вашем вопросе вместо просто части. –  Paused until further notice. 6 July 2009 в 16:08

Это может получить Вас немного ближе:

RewriteRule ^([^.?]+)(.*)$       $1.php$2 [L]

но кто-то еще может, вероятно, обеспечить что-то лучше.

Попробуйте этого:

RewriteCond %{QUERY_STRING}     (.*)
RewriteRule ^(.*/?[^.]+)$       $1.php?%1    [L]
0
ответ дан 4 December 2019 в 23:30
  • 1
    Это просто бросило " 500 Внутренних Серверов Error".Примечание: это - CentOS 64 бита, не i386. –  user11665 6 July 2009 в 01:33
  • 2
    ОС shouldn' t имеют любое значение. –  Paused until further notice. 6 July 2009 в 06:27

Если все, что Вы пытаетесь сделать, скрывают расширение файла от URL, почему Вы просто не включаете опцию "MultiViews" для пути? Я обычно делаю это на моих веб-сайтах, таким образом, я могу смешать .html и .php страницы, но упустить расширение из URL.

Если у Вас есть "AllowOverride Все" или "Опции AllowOverride", настроенные для Вас веб-страница, можно просто добавить .htaccess файл со следующим:

Options +MultiViews

Это включит MultiViews, и Apache будет использовать согласование MIME для нахождения доступного файла в пути, или если Вы имеете полный контроль над конфигурационным файлом Apache, можно просто добавить "Мультипредставления" к строке "Опций" в конфигурационном файле.

Если Вы хотите видеть пример, можно проверить мой URL политики GPG по http://undergrid.net/legal/gpg, который является, работал полностью от моей/legal/gpg.php страницы.

0
ответ дан 4 December 2019 в 23:30

Теги

Похожие вопросы