У меня есть веб-сайт на основе 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]