В моем php
-проекте, у меня есть следующая структура папок.переписать условие не работает
/ [root]
|-- ... [some other folders]
|-- util/ // containing js,css files; should be accessible for anyone.
|-- client/
|--data/ // contains files which can be uploaded by users
|-- private/ // should only be accessible for logged in users
|-- public/ // should be accessible for anyone.
|-- ... [some other folders]
|-- index.php
я хочу достичь следующее поведение:
- Если кто-то прямой доступ к чему-либо в Util/он должен просто получить то, что он просил, если это не каталог.
- Если кто-то хочет получить доступ к любому файлу в пределах
client/
, он должен быть перенаправлен на index.php. Например, кто-то входит в URL-адресwww.test.com/client/data/private/test.jpg
, сервер должен получить запросindex.php?request1=client/data/private/test.jpg
. - Все остальное должно быть переписано в
index.php?request2=$1
Я не в состоянии получить функцию пункт 2 в соответствии с ожиданием.
Я использую следующий файл .htaccess, чтобы справиться с этим:
RewriteEngine On
# allow access to all files within util/ WORKS!!
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)(util)($|/) - [L]
# here i have problems.. how can i achieve, that access to folder client/ is rewritten to index.php?request1=$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^client
RewriteRule ^(.*)$ index.php?request1=$1 [QSA,L]
# rewriting everything else WORKS!!
RewriteRule ^(.+)$ index.php?request2=$1 [QSA,L]
Что я делаю неправильно здесь?
Что должно произойти с '/ клиент/dir1/dir2', где конкретный _file_ был не запрошенной? Должно ли это быть переписано index.php, или если доступ к каталогу не изменен? –
это должно либо быть захвачено RewriteRule 3, либо выбросить одну из этих ошибок http 401, 404. но я бы предпочел Правило 3 – emfi
Ах, подождите минутку - 'REQUEST_URI', вероятно, должен иметь ведущий'/'при сопоставлении как' ^/клиент ", так как будет структурирован заголовок. Это в отличие от того, как «RewriteRule» ожидает соответствия в контексте каталога. Попробуйте, и это может быть все, что вам нужно. Все остальное выглядит справедливо для меня. –