0

了解しました。セットアップしているサーバーのCMSをダウンロードしましたが、ファイルのパスに問題があります。

ルートディレクトリはすでに別のCMSによって使用されているため、CMSをサーバーのサブディレクトリに配置しました。ただし、CMSはコード内で「/」を繰り返し使用してファイルにリンクします。たとえば、次のコードを使用して画像が見つかります。

<img src="/images/banner.png" />

ご存知のように、これは機能しません。上記のリンクは、サブディレクトリではなく、サーバーのルートにあるimagesフォルダにリクエストをリダイレクトするためです。CMSには「.htaccess」ファイルも付属していたので、「/」文字を使用して行われたすべてのリクエストをサーバーのサブディレクトリにリダイレクトできるとすぐに思いました。これは元の「.htaccess」ファイルです。

RewriteEngine On

RewriteRule ^index.php(|/)$ content/.php
RewriteRule ^error.php(|/)$ content/error.php
RewriteRule ^housekeeping(|/)$ housekeeping/index.php
RewriteRule ^(|/)$ content/$1.php
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ content/$1.php
RewriteRule ^rd/([^/]+)(|/)$ /rd.php?id=$1

RewriteRule ^quickregister/start(|/)$ /register/start.php
RewriteRule ^quickregister/step2(|/)$ /register/step2.php
RewriteRule ^quickregister/step3(|/)$ /register/complete.php

RewriteRule ^community/online(|/)$ content/online.php
RewriteRule ^community/vip(|/)$ content/vip.php
RewriteRule ^credits/goldvip(|/)$ content/goldvip.php

RewriteRule ^home/(..*)$ content/home.php?u=$1
RewriteRule ^articles/(..*)$ content/articles.php?story=$1

ErrorDocument 403 /content/error.php
ErrorDocument 404 /content/error.php

追加することで考えました

RewriteRule ^/$ /subdirectory/

「/」へのリクエストはリダイレクトされますが、役に立ちません。apacheの設定を確認しましたが、htaccessファイルを使用して設定を上書きできるようになっているようですので、誰か助けていただければ幸いです。

前もって感謝します!

編集: 私は解決策に本当に近づきました。このコードを「RewriteEngineon」のすぐ下に挿入しました。

RewriteRule ^(.*)/(.*)$ /private_servers/strebbohotel/$2

これにより、URL「http://mysite.com/private_servers/strebbohotel/content/.php」にアクセスしたときに次のエラーページが返されました:見つかりません

要求されたURL/private_servers/strebbohotel/.phpがこのサーバーで見つかりませんでした。

さらに、ErrorDocumentを使用してリクエストを処理しようとしたときに、404NotFoundエラーが発生しました。

ご覧のとおり、何らかの理由で「content」サブディレクトリをスキップします。.htaccessファイルの他の行と関係があると思いますが、どの行かわかりません。より複雑な正規表現が必要な場合もありますが、特に得意ではないので、誰かが私をさらに助けてくれれば幸いです。

4

3 に答える 3

1

あなたはあなたのルートディレクトリの.htaccessファイルを変更する必要があります-そしてそれは他のCMSを台無しにします。私の頭に浮かぶ唯一の解決策は、RewriteCondの組み合わせを使用することです。

RewriteCond %{HTTP_REFERER} my_better_cms_url_regex
RewriteCond %{REQUEST_URI} ^/images/.*$
RewriteRule ^.*$ /subdirectory/%{REQUEST_URI}

それでうまくいくはずです。カスタマイズする場合は、このチートシート(または類似版)を参照してください。ただし、ルートディレクトリの.htaccessは、サブディレクトリcmsに対して行われたすべてのリクエストに対してチェックされることに注意してください。したがって、2番目の条件が必要です。

于 2012-08-03T16:22:09.347 に答える
1

CMSサブディレクトリの.htaccessファイルは、サーバーのルートディレクトリに対して行われた要求には影響しません。そこに.htaccessを追加する必要があります。

それでも、CMSからのリクエスト(例の画像リクエストなど)を、Webルートのアプリケーション向けのリクエストとどのように区別するかはわかりません。

CMSには、Webルート以外のファイルのパスを指定できる構成設定がありませんか?

于 2012-08-03T16:19:25.400 に答える
1

使用したい:

RewriteBase /another_root_dir/

.htaccessファイルの先頭に

于 2012-08-03T17:02:19.297 に答える