Ошибка RewriteCond с-f условием

Я хотел бы перенаправить весь запрос к своему веб-сайту к папке 'место', если файл существует в этой папке.

Например: если мой веб-сайт содержит файлы/foo/foo.html,/bar/bar.html и/site/site.html Я хотел бы следующие переназначения:

/foo/foo.html -> /foo/foo.html
/bar/bar.html -> /bar/bar.html
/site/site.html -> /site/site.html
/site.html -> /site/site.html

Я думал, что что-то вроде этого должно добиться цели:

Options +FollowSymLinks
RewriteEngine On
# Check if the requested path is not a real file or folder
RewriteCond %{DOCUMENT_ROOT}/site/%{REQUEST_URI} -f
# if not a real file/folder: myhost.com/blabla -> myhost.com/site/blabla
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/site/$1 [R=301,L]

Но я получаю эти ошибки в регистрации:

[warn] RewriteCond: NoCase option for non-regex pattern '-f' is not supported and will be ignored.

Какая-либо идея, что могло быть неправильным? Я не добирался очень от Google на этой ошибке...

P.s.: Я использую bluehost веб-сайт, и mod_rewrite активен.

0
nl ja de

1 ответы

Я думаю, что это должно добиться цели:

RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(.*)$ /site/$1 [R=301,L]

Если вам нужны все неизвестные запросы к goto site.html, необходимо использовать:

RewriteRule ^(.*)$ /site/site.html [R=301,L]
1
добавлено
Я хочу, чтобы переназначение пошло на место папки, не определенно site/site.html, таким образом, первый должен работать. Я добрался, много из" [предупреждает] RewriteCond: выбор NoCase для non-regex образца '-f' не поддерживается и будет проигнорирован. ". И получил ошибку на количестве перенаправления с получающимся URL, подобным этому: mysite/site/site/site/site/site/site/site/site/site.html. Я думал, что L, как предполагалось, остановил будущее переписывание? That' s, почему я сделал противоположное в своем примере, проверив, существует ли файл site/site.html прежде, чем попытаться перенаправить к нему.
добавлено автор Florian, источник
Проблема возникла из Вариантов +FollowSymLinks который isn' t поддержанный на моем сервере... Я использую SymLinksIfOwnerMatch вместо этого, и он работает с моим кодом и вашим без петли. Спасибо!
добавлено автор Florian, источник