0

ワイルドカード サブドメインを使用しているときにページへのリンクに問題があり、解決策を見つけるために少し助けていただければ幸いです。

ユーザーが自分のサブドメインを持って自分の Web サイトのコンテンツを表示できるようにしたいので、ユーザーが「user1.domain.com」と入力すると、サーバーにはルート ディレクトリの index.php ページにリクエストを送信する書き換えルールが設定されます。この index.php ページはすべてのサブドメインに使用され、クエリ文字列で渡されたサブドメインに基づいてデータベースからコンテンツを提供します。

この部分はうまく機能しており、index.php のコンテンツを適切に提供しています。index.php ページが読み込まれると、メニュー (ホーム | レンタル | お問い合わせ) が含まれます。メニューリンクをクリックして別のページに移動すると、問題が発生します。URL アドレスは変更されますが、ページ コンテンツは変更されません。

以下に例を示します: 「RENTALS」をクリックすると、ユーザーが Rentals.php ページに移動し、「user1」サブドメインで利用可能なレンタルを表示するようにします...しかし、ここで何が起こっているのですか:

リンク シナリオ 1:

<a href="http://user1.domain.com/rentals.php">RENTALS</a>   --> URL address bar changes to "user1.domain.com/rentals.php" but the page doesn't change, it still stays on the index.php content

リンク シナリオ 2:

 < a href="rentals.php" >RENTALS< /a >   --> URL address bar changes to "user1.domain.com/rentals.php" but the page doesn't change, it still stays on the index.php content

リンク シナリオ 3 (ドメインをハードコードし、ワイルドカード サブドメインを省略した場合、リンクは機能します):

<a href="http://www.domain/public_site/rentals.php">RENTALS</a>   --> URL address bar changes to "http://www.domain.com/public_site/rentals.php" AND IT WORKS, the rentals.php page loads and serves up the content.

シナリオ 3 の問題は、「user1.domain.com/rentals.php」という URL を読みたいことです。

これで書換え状態にできるのかと思っているのですが、よくわかりません。

誰かが助けてくれるなら、私は感謝します!

これが私のディレクトリ構造です:

ROOT
  |
  PUBLIC_SITE
     |
     index.php
     rentals.php
     contactus.php

これがApacheの書き換えルールです(最初のルールは機能します。問題を解決するために追加した2番目のルールですが、問題は解決しませんでした):

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On

   ####Rewrite subdomain request to public_site/index.php
   RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
   RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC]
   RewriteRule ^(.*)$  /public_site/index.php?subdomain=%2 [L]

   #### Rewrite rule for rentals.php page
   RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com/rentals.php [NC]
   RewriteRule ^(.*)$  /public_site/rentals.php?s=%2 [L]

</IfModule>
4

1 に答える 1

0

書き直しに入った後、自分でそれを理解しました...

このコードを「メイン ドメイン」ルールの前に置くだけです。

#### Rewrite rule for rentals.php page
   RewriteCond %{REQUEST_URI} ^/rentals.php?$ [NC]
   RewriteRule ^(.*)$  /public_site/rentals.php [L]
于 2011-12-09T21:24:01.213 に答える