.htaccess перенаправить корень в подпапку - PullRequest
3 голосов
/ 22 февраля 2010

Я бы хотел, чтобы mod_rewrite перенаправлял все запросы в несуществующие файлы и папки, а все запросы в основную папку («корень») в подпапку. Итак, я настроил это так:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC,OR]
RewriteCond %{REQUEST_URI} / [NC]
RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA]

К сожалению, это не работает: если я запрашиваю example.com/public/, он перенаправляет на мой скрипт обработки (таким образом, перенаправление на мой / subfolder / index.php? App = public), хотя папка "public" существует. Обратите внимание, что запрос domain.com/ правильно перенаправляет в мою / subfolder / index.php

Почему это?

1 Ответ

7 голосов
/ 31 марта 2011

это не работает, потому что ваше последнее условие не совпадает только с корнем, но с любым URI, который имеет / в нем, что в основном все.Вместо этого попробуйте следующее:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA]

Обратите внимание, что [NC] не требуется, так как вы не пытаетесь сопоставить ни один алфавит, поэтому «Нет регистра» на самом деле не нужно.

Надеюсь, что этопомогает.

...