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 でオフラインで開発しているので、これも良くありません。
他の解決策はありますか?
どうもありがとうございました。