Я работаю над новым проектом, в котором я хочу улучшить безопасность с помощью двухуровневых папок.
Папка «Core» содержит все папки, включая «public», которая должна быть единственной папкой, к которой имеет доступ посетитель.
Краткое введение в мой веб-каталог:
webdir
| - .htaccess (core)
| - classes
| - functions
| - public
| - .htaccess (public)
| - css
| - files
| - de
| - en
| - general
| - nl
| - images
| - index.php
| - js
| - swf
| - template
Для вашей информации:
- Мой файл public / index.php сортирует, в каком разделе находятся файлы, через [geturl] и [section]. Запрос "http://example.com/nl/openfile" указывает на:
публичный / index.php
- этот файл читает $ _GET и видит, что [geturl] является "openfile" в [section] "nl"
public / index.php хочет открыть: "files / nl / openfile.php"
- Вот как это работает, и я хочу, чтобы это работало!
Что я хочу достичь с помощью .htaccess, это следующее:
Мои текущие файлы .htaccess:
.htaccess (ядро)
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
Options -Indexes
RewriteCond %{HTTP_HOST} ^customer.com$ [NC]
RewriteRule ^(.*)$ http://www.customer.com/$1 [R=301,L]
RewriteRule ^company(.*)$ public/$1?section=company [L]
RewriteCond %{QUERY_STRING} (.*)
RewriteRule !(nl|en|de)/(.*).* /webdir/nl/ [R=301,L] # IF NO LANG ISSET THAN NL REDIRECT
RewriteRule ^error(.*).* public/?getpage=error&%1 [PT,L]
RewriteRule ^(nl|en|de)/(.*).* public/$2?section=$1&%1 [L]
</IfModule>
.htaccess (общедоступный)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*).* index.php?geturl=$1&%1 [PT,L]
</IfModule>
Что я делаю не так и как я могу улучшить файлы .htaccess?
Подводя итог, я хочу, чтобы .htaccess сделал следующее: