私はこの部分で立ち往生しており、私はいくつかの支援を得ることを望んでいた。私はPHPでハイスコアページを作成していますが、うまくいきます。しかし、index.php?skill=name
のアイデアが嫌いなので、この中に少しSEOが必要でした。
URLをよりわかりやすいバージョンに正常に置き換えました:highscores/skill/name
そして、ここから問題が始まります。ハイスコアにページネーションを追加し、ページはHTTP_GETページ変数($_GET['page']
)から読み取られます。
私はhighscores/skill/name&page=2
のアイデアが嫌いで、皆さんが次のようなURLを作成するのを手伝ってくれることを望んでいました。
ページ1。ページ番号を宣言せずにファイルにアクセスします。
DOMAIN.TLD/highscores/skill/name
ページ> 1なので、ページ変数が必要になります。
DOMAIN.TLD/highscores/skill/name/2
「2」がページ2を定義し、ページ2の正しいデータをロードすることがわかると思いますが、このように構成するために.htaccessファイルに多くの問題があります。
RewriteRule ^highscores\/skill\/(.*?)(\/(.*?)*)$ highscores/skills.php?skill=$1&page=$2 [L] # Skills page
それが動作するようにするための私の最新の試みであり、残念ながら動作せず、ページを恐ろしく見せて(CSSは動作しません)、URLで指定されたページに移動しません。
パート2-最初の問題を解決してくれたw3dのおかげで、2番目の問題に直面しました。最初の問題が解決することを望んでいました。
Highscoresディレクトリのインデックスページには、総合スコアdomain.tld/highscores/
が表示されます。しかし、私はdomain.tld/highscores/?page=2
のアイデアが好きではありません
domain.tld/highscores/2
のようにする方法を教えてください2
はもちろんページ番号です。
私が試したものは次のとおりです。
RewriteRule ^highscores/([^/]+)?$ ./highscores/index.php?page=$1 [L]
.htaccess(ドキュメントルート内)で次のことを試してください。
RewriteRule ^highscores/skill/([^/]+)(/([^/]+))?$ /highscores/skills.php?skill=$1&page=$3 [L]
highscores/skills.php
はドキュメントのルートから物理的に配置されていると想定しているため、このURLを置換でルート相対にしています。ここでは相対URLを使用すると問題が発生する可能性があり、RewriteBase
の使用が必要になる場合があります。
これで、ページ番号の部分は完全にオプションになりました。以前は、ページ番号が省略された場合は一致しませんでした。例えば。 DOMAIN.TLD/highscores/skill/name
(おそらくページコードの「空」または1
を確認する必要があります。)
正規表現は、任意の文字ではなく、URLセクションの/
(パス区切り記号)以外のものと一致します。
$3
(スラッシュを含む2番目のかっこ付きパターン)ではなく、$2
(かっこ付きサブサブパターン)をキャプチャします。
ステートメントの最後にインラインコメントを含めないでください。これにより、Apacheの以降のバージョンが破損する可能性があります。
CSSが機能しないのは、おそらくCSSファイルへの相対パスを使用しているためでしょうか?この場合、ブラウザは、ページ番号が含まれているかどうかに応じて、2または3フォルダの深さであるとみなしますが、skills.php
の深さは1フォルダのみです(あなたはおそらくあなたのCSSファイルを参照しています)。代わりにルート相対URLを使用してください。
PART 2-質問の2番目の部分への回答で... 500内部サーバーエラーの理由は、2つのルールが競合しているため、書き換えループが発生することです。 2番目のRewriteRule
でanythingではなく、ページnumberを具体的にチェックすることで、このインスタンスの競合を回避できます。
RewriteRule ^highscores/(\d+)?$ /highscores/index.php?page=$1 [L]
(\d+)
数字のみをチェックします(つまり、ページ番号のみにすることができます)
置換パスの接頭辞.
も削除しました。