0

Facebookに似たWebサイトを作成するために、初めてmod_rewriteを使用しています。

mywebsite.com/user.name と入力すると、mod_rewrite によって mywebsite.com/hotsite/index/php にリダイレクトされ、そこで小さな php を使用して URL からユーザー名を取得し、そこから userId を取得します。

次に、mywebsite.com/user.name/diary、mywebsite.com/user.name/contact などの他の領域があります...

これはすべて、.htaccess の次のコードでうまく機能しています。

Options +FollowSymlinks
RewriteEngine on
RewriteBase /mywebsite

# ————————————————————————-
# > URL REWRITING
# ————————————————————————-

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)/diario$ hotsite/diary.php
RewriteRule ^(.*)/recados$ hotsite/messages.php
RewriteRule ^(.*)/fotos$ hotsite/photos.php
RewriteRule ^(.*)/videos$ hotsite/videos.php
RewriteRule ^(.*)/contato$ hotsite/contact.php
RewriteRule ^([a-z0-9._\-]+)$ hotsite/index.php [L]

私が抱えている問題は、外部ファイル (css、画像、背景など) へのパスにあります。私のブラウザは私が "website.com" にいると認識しているので、すべてのパスに "hotsite/" を追加する必要がありました。これは、「mywebsite.com/user.name」などのユーザーのメイン ページにいるときにうまく機能します。ただし、「mywebsite.com/user.name/diary」に移動すると、ブラウザーは別のフォルダーにいると見なし、パスを機能させるために「../hotsite」を追加する必要があります。

すべてのパスで IF を作成して、インデックスにいるかどうかを確認できますが、これは非常に面倒です。evertyhing に絶対パスを入れることもできますが、apache でオフラインで開発しているので、これも良くありません。

他の解決策はありますか?

どうもありがとうございました。

4

1 に答える 1

0

おそらくbase、HTML で利用可能なタグを使用する必要があります (<head></head>タグの間に入れてください):

<base href="yoursiteroot" />

つまり、次のようなものです。

<base href="/mywebsite" />

ただし、これには、指定したパスに基づいて相対リンクを調整する必要があります。:-)

于 2013-07-15T14:28:06.287 に答える