URL全体を取得するようにhtaccessルールを設定し、以下のルールを使用してインデックスファイルに転送するサイトがあり、すべてが正常に機能しています。
#################################
# Magic Re-Writes DO NOT CHANGE #
#################################
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
#RewriteBase /
# Do Not apply if a specific file or folder exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# The rules on how to rewrite the urls
RewriteRule (.*) /index.php?url=$1 [QSA,L]
</IfModule>
したがって、以下のルールはhttp://mydomain.com/players/scoresheet/singlegameを転送します
に
http://mydomain.com/index.php?url=players/scoresheet/singlegame
ただし、URLの末尾のスラッシュを忘れている人に対応する必要もあります。これは通常は簡単なことですが、最後の文字が数値でない場合にのみ最後の末尾のスラッシュを強制できるようにする必要があります(または明らかにスラッシュ)。
たとえば、誰かが入力します。
http://mydomain.com/players/scoresheet/singlegame
ブラウザで次のように表示する URL が必要です: http://mydomain.com/players/scoresheet/singlegame/
それでも転送されます: http://mydomain.com/index.php?url=players/scoresheet/singlegame/
前述のように、これに対する例外は、最後の文字に既に末尾のスラッシュがある場合、または数字である場合です。
(それが理にかなっていることを願っています)
わかりました、これまでのところ私が持っているものは...
#######################################
# Add trailing slash to url #
# unless last character is a number #
#######################################
<IfModule mod_rewrite.c>
RewriteEngine on
Rewritecond %{REQUEST_URI} [^0-9/]$
RewriteRule ^(.*)$ /$1/ [R=301,L]
</IfModule>
#################################
# Magic Re-Writes DO NOT CHANGE #
#################################
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
# Do Not apply if a specific file or folder exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# The rules on how to rewrite the urls
RewriteRule (.*) /index.php?url=$1 [QSA,L]
</IfModule>
これに関する問題は、URLにスラッシュが追加されているように見えますが、index.phpも追加されるため、最終的には次のようになります。
訪問: http://mydomain.com/players/scoresheet/singlegame
URL を次のように書き換えます: http://mydomain.com/index.php?url=players/scoresheet/singlegame/
スラッシュが追加されますが、インデックス部分を表示せずに追加する必要があります。
私はさまざまな結果 (通常は完全な失敗またはループ) で、前後に移動しました。
どんな助けでもいただければ幸いです