0

htaccess ファイルを使用して Apache で問題が発生しています。同じ場所を指している 2 つの異なる仮想サブディレクトリからアクセスする必要があるスクリプトが 1 つあります。

問題は、書き換えベースをある場所に設定し、別の場所からアクセスしようとすると、間違った変数が含まれていることです。これは仮想ディレクトリであるため、.htaccess ファイルは 1 つしかないため、htaccess ファイルがスクリプトにアクセスするときに呼び出されるディレクトリを認識する方法が必要です。これにより、スクリプトの書き換えベースを適切な仮想ディレクトリ。

私はこれについて頭を悩ませています。これが私が持っているコードで、動作しません。いくつかのバリエーションを試してみましたが、近いように感じますが、困惑しています。

            Options -Indexes
            Options +FollowSymLinks
            ErrorDocument 404 index.php

            <IfModule mod_rewrite.c>
              RewriteEngine on

              RewriteCond %{DOCUMENT_ROOT} /$1 -f 
                RewriteBase /$1/


              RewriteCond %{REQUEST_FILENAME} !-f
              RewriteCond %{REQUEST_FILENAME} !-d
              RewriteCond %{REQUEST_URI} !=/favicon.ico
              RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
            </IfModule>

何か案は?

4

1 に答える 1

0

トリックは、RewriteBase を使用してルートを指すようにすること/です。ルート .htaccess の下の次のようなコードを検討してください$DOCUMENT_DIR

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

ErrorDocument 404 index.php

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^(?:vdir1|vdir2)/(.*)/?$ index.php?q=$1 [L,NC,QSA]

ここで、vdir1 と vdir2 は 2 つの仮想ディレクトリです。

于 2012-05-18T19:59:13.883 に答える