Скрыть родительский каталог из URL или разрешить ссылкам не требовать родительский каталог - PullRequest
0 голосов
/ 19 октября 2018

У меня есть веб-сайт на основе PHP, который я хотел бы сделать немного более безопасным и более дружественным к SEO.На моем сайте есть две папки private и site.Все общедоступные страницы, css, скрипты, изображения находятся в папке site.Весь мой внутренний PHP-код находится в папке private.В настоящее время я защищаю любой доступ к личной папке с помощью Deny from all в файле .htaccess, который находится в папке private.На моем локальном сервере (в настоящее время используется XAMPP) проект находится в моей папке htdocs и имеет имя проекта, которое мы назовем example_project.В папке site у меня есть несколько других подкаталогов, разбирающих CSS, JS, изображения и несколько основных подкатегорий страниц моего сайта.Я очень стараюсь понять, как сделать так, чтобы в (A) URL-адресе НЕ нужно было включать site в URL-адресе для доступа ко всему, что находится под ним, и (B) он изменит любые запросы, включая site в URL, который будет переписан, чтобы исключить его из пути.

(A) Пример example_project/subfolder/index.php доступ example_project/site/subfolder/

(B) Пример example_project/site/subfolder/index.php перенаправляет на example_project/subfolder/

У меня есть файл .htaccess почти в каждом каталоге.В моем верхнем уровне моего проекта (обратите внимание, что это не веб-корень сервера) У меня есть следующий .htaccess файл

<FilesMatch "\.(css|flv|gif|htm|html|ico|jpe|jpeg|jpg|js|png|pdf|swf|txt|php)$">
    #Used to allow for content expiration
    <IfModule mod_expires.c>
        ExpiresActive Off
    </IfModule>
    <IfModule mod_headers.c>
        FileETag None
        Header unset ETag
        Header unset Pragma
        Header unset Cache-Control
        Header unset Last-Modified
        Header set Pragma "no-cache"
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Expires "Mon, 10 Apr 1972 00:00:00 GMT"
    </IfModule>
</FilesMatch>

RewriteEngine On

#Force site to require https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#Allow links not to have the .php file extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

#THIS IS WHAT I AM HAVING TROUBLE WITH
RewriteRule ^$ site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^site /example_project/site/$1 [NC,L]

РЕДАКТИРОВАТЬ Обратите вниманиечто я только что вспомнил добавить группу захвата, поэтому последняя строка теперь читается как RewriteRule !^site/([-/\w]+) /hb1/site/$1 [NC,L]

1 Ответ

0 голосов
/ 22 октября 2018

Прокомментируйте сначала 2 http->https и .php правила и протестируйте с этими правилами

RewriteEngine On

RewriteRule ^$ site/ [L]

RewriteRule ^(?!site/).* site/$0 [NC,L]
...