ワイルドカード サブドメインを使用しているときにページへのリンクに問題があり、解決策を見つけるために少し助けていただければ幸いです。
ユーザーが自分のサブドメインを持って自分の 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>