mod_rewrite: перепишите существующий файл, чтобы отложить, отложить в существующий файл

В зависимости от Вашего приложения программный брандмауэр в ОС мог бы быть достаточно хорошим, но NIC не является частным просто, потому что Вы маркируете это частным. NICs находятся на том же широковещательном домене, и любой NIC на том широковещательном домене может связаться с любым другим NIC на том широковещательном домене. Если Вы хотите, чтобы это не имело место, Вам нужны или физическая сеть или в разделение логической схемы.

1
задан 13 April 2017 в 15:14
2 ответа

То, что это не работает должным образом, связано с порядком выполнения RewriteConds и RewriteRules. RewriteRules оцениваются перед RewriteConds, которые им предшествуют. Итак, ваш запрос на /public/my-file.html обрабатывается следующим образом: (Я сохраню вашу нумерацию)

  • Сначала URL проверяется на соответствие тестовому шаблону 2. И это соответствует. . * в конце концов соответствует чему угодно ..
  • Затем RewriteCond 1 оценивается . Поскольку это не удается, подстановка в 2 не выполняется.
  • URI проверяется на соответствие тестовому шаблону 4. Этот тестовый шаблон не совпадает, поскольку ваш URI начинается с /. Правило не выполняется, поэтому RewriteCond в 3 никогда не оценивается.

RewriteConds (а у вас может быть несколько) принадлежат RewriteRule, которое следует за ними, и оцениваются только в том случае, если шаблон в RewriteCond совпадает первым. Я знаю, это немного нелогично.

О синтаксисе читайте здесь: Перенаправление, изменение URL-адресов или перенаправление HTTP на HTTPS в Apache - все, что вы когда-либо хотели знать о правилах Mod_Rewrite, но боялись спросить

Как решить вашу проблему?

Может быть, что-то вроде:

RewriteRule  ^/public/(.*)$     /$1 [R=301,L]
RewriteRule  ^(-*)$             /public/$1

И последний совет: включите перезапись журнала. Вы узнаете набор ...

1
ответ дан 4 December 2019 в 00:44

Вы можете просто проверить наличие реальных файлов / папок и пропустить ..

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

У вас может быть несколько Cond перед правилом.

0
ответ дан 4 December 2019 в 00:44

Теги

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