0

アプリケーションディレクトリの下に2つのディレクトリがあります

my_app:
  .htaccess
  lib:
    entry.php
  web:
    css:
      css_file1
      css_file2
    js:
      js_file1
      js_file2

私のURLは次のようになりますhttp://example.com/my_app/my_path

ディレクトリmy_appの下には、 weblibの2つのディレクトリがあります。

my_pathをWebディレクトリの下の任意のファイルにマップできる場合は、それを使用します。

たとえば、http: //example.com/my_app/css/css_file1はmy_app / web / css/css_file1にマップする必要があります。

それ以外の場合は、 lib / entry.php / my_pathにリダイレクトして、my_pathに$_SERVER['PATH_INFO']からアクセスできるようにします。リダイレクトは内部で行う必要があります。リダイレクトはユーザーに表示されないようにする必要があります。

それを達成するために.htaccessに設定を書きたいです。以下のようにコードを書きました。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule (.*) ../web/$1  
    RewriteCond web/%{REQUEST_FILENAME} !-f 
    RewriteCond web/%{REQUEST_FILENAME} !-d 
    RewriteRule (.*) lib/entry.php/$1 
</IfModule>

しかし、403エラーが発生します。

4

1 に答える 1

1

私は、次のことがあなたのために働くべきだと信じてい/var/www/.htaccessます$DOCUMENT_ROOT:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{DOCUMENT_ROOT}/$1/web/$2 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1/web/$2 -d
RewriteRule ^([^/]+)/(.*)$ $1/web/$1 [L]

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^([^/]+)/(.*)$ $1/lib/entry.php/$2 [L]
于 2012-11-01T15:43:05.740 に答える