0

共有ホスティング Web スペースで Web ショップ (xtCommerce) を実行しています。

ルート ディレクトリ (ショップ 1 がインストールされ、稼働している場所) には、ショップ ソフトウェアによって提供される .htaccess ファイルが含まれます。

DirectoryIndex index.php

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/extAdmin/
RewriteCond %{REQUEST_URI} !^/skin/
RewriteCond %{REQUEST_URI} !^/js/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php

同じ .htaccess ファイルを含む /shop2 に、同じ Web スペース内に 2 つ目の Web ショップ (xtcommerce) をインストールしました。

www.shop1.net -> /
www.shop2.net -> /shop2

-shop2 にアクセスしようとすると 403 になります
-/shop2 の .htaccess から RewriteEngine を削除すると、フロントページは問題なく表示されますが、リンクが壊れているようです。

mod_rewrite についてよくわからないので、2 つ目の .htaccess ファイルに RewriteBase /shop2 を追加しようとしましたが、失敗しました。

前もって感謝します!

編集:RewriteRule .* http://google.deルートディレクトリで使用し、/shop2 の .htaccess を削除しても、「禁止」され続けます。多分問題は書き換えではありませんか?

EDIT2: 現在のステータス:
.htaccess in /

DirectoryIndex index.php

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/extAdmin/
RewriteCond %{REQUEST_URI} !^/skin/
RewriteCond %{REQUEST_URI} !^/js/

RewriteCond %{HTTP_HOST} !shop2\.net$ [NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php

/shop2 の .htaccess (4 つの異なる例)

RewriteRule .* index.php # frontpage shop2.net works, any URLs to be rewritten result in 404
RewriteRule .* shop2/index.php # frontpage shop2.net works, any URLs to be rewritten result in 404
RewriteRule .* http://google.de # frontpage shop2.net works, any URLs to be rewritten result in 404
#RewriteRule .* index.php # shop2.net => forbidden
4

1 に答える 1

0

あなたがそこに持っている仮想ホストのかなり奇妙な設定。問題は、ルートのhtaccessが/shop2のhtaccessの前に実行されることです。ルートhtaccessは、ルートのindex.phpファイルを書き換えます。ただし、shop2.netのdocument_rootは/ shop2であるため、index.phpファイルはdocument_rootの外部にあるため、apacheはこれを禁止しています(必要に応じて)。これを修正するには、これをルートhtaccessに入れます。

RewriteEngine on
RewriteCond %{HTTP_HOST} !shop2.net$
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/extAdmin/
RewriteCond %{REQUEST_URI} !^/skin/
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php

ただし、shop1のサブフォルダーではなく、shop2用に別のフォルダーを作成することをお勧めします。

于 2012-12-30T21:35:41.247 に答える