Ответ 1
Поместите этот код в /My-Project/.htaccess
:
RewriteEngine On
RewriteBase /My-Project/
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
Bellow - это структура моего сайта:
htdocs/
My-Project/
public/
index.php
css/
img/
js/
src/
config.php
templates/
library/
Я не хочу, чтобы какой-либо прямой доступ к любому файлу внутри каталога src
не требовался. src
содержит мои скрипты шаблонов и серверных логических систем.
Я хочу настроить свой .htaccess
, чтобы пользователь, отправляясь на мой сайт (корневая папка My-Project
), перенаправляется на My-Project/public/index.php
. Я хотел бы, чтобы URL-адрес просто выглядел как My-Project.com
, а на индексной странице.
Любая помощь? Я не решаюсь модифицировать свой файл .htaccess, поскольку вижу здесь множество противоречивых советов и в сети относительно наилучшего способа сделать это.
Поместите этот код в /My-Project/.htaccess
:
RewriteEngine On
RewriteBase /My-Project/
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
Добавьте следующую строку в первую строку вашего .htaccess
DirectoryIndex public/index.php public/index.html
Я внес некоторые изменения в ответ @anubhava для работы на localhost и с дружественными URL-адресами.
Структура каталогов:
myapp/.htaccess (корневая папка myapp)
RewriteEngine On
RewriteBase /myapp
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^(.*)$ public/index.php?$1 [L,QSA]
MyApp/государственные/.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
MyApp/государственные/index.php
<?php
echo 'Hello<br>';
echo $_SERVER['QUERY_STRING'];
Некоторые запросы:
Hello
http://localhost/myapp/post/new
Привет
пост/новый