web-dev-qa-db-ja.com

サイトルートからパブリックフォルダへの.htaccessリダイレクト、URLの「パブリック」を非表示にしますか?

以下は私のサイトのディレクトリ構造です。

htdocs/
    My-Project/
        public/
            index.php
            css/
            img/
            js/
        src/
            config.php
            templates/
            library/

srcディレクトリ内のファイルに直接ユーザーがアクセスしたくない。 srcには、テンプレートとバックエンドのロジックスクリプトが含まれています。

ユーザーが自分のWebサイト(ルートフォルダー.htaccess)にアクセスすると、My-Projectにリダイレクトされるように、My-Project/public/index.phpを設定したい。インデックスページにいる間、URLがMy-Project.comのように見えるようにしたいと思います。

何か助け?これを行う最善の方法について、こことネット上で多くの矛盾するアドバイスを見るので、私は.htaccessファイルを変更することをheしています。

17
Prefix

このコードを/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]
40
anubhava

.htaccessの最初の行に次を追加します

DirectoryIndex public/index.php public/index.html
8
daxeh

@anubhavaのlocalhostでの操作とわかりやすいURLに対する応答に変更を加えました。

ディレクトリ構造:

  • /(localhostルートフォルダー)
    • myapp /
      • 公衆/
      • index.php
    • 芯/
      • いくつかのコアファイル...

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/public/.htaccess

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

myapp/public/index.php

<?php
echo 'Hello<br>';
echo $_SERVER['QUERY_STRING'];

一部のリクエスト:

http:// localhost/myapp /

こんにちは


http:// localhost/myapp/post/new

こんにちは

投稿/新規

2
SandroMarques