mod_rewrite の問題への回答を求めて Web をあさりましたが、もう限界だと感じています。次のような URL が表示されますhttp://www.website.com/dashboard.php?username=stackoverflow
。この URL は、その中で最も美しいものではありません。だから私の目標は、ここでいくつかのことをすることです...
- phpファイルの拡張子を削除します(これまでのところ、以下に示すコードでこれを行うことができましたが、必要な他のことに従ってそのままになるかどうかはわかりません)
- 「www」プレフィックスを削除します
- ユーザー名クエリ文字列を移動します(「ユーザー名」の場合のみ、「id」などと一致させたくありません)「.com/」の直後
- php ファイル名 (拡張子なし) をクエリ文字列の後に移動します。
最終的な URL は次のようになりhttp://website.com/stackoverflow/dashboard
ますhttp://website.com/stackoverflow/profile
。
ファイル拡張子を削除する現在のコードは次のとおりです。
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# remove .php ONLY if requested directly
RewriteCond %{THE_REQUEST} (\.php\sHTTP/1)
RewriteRule ^(.+)\.php$ /$1 [R=301,L,QSA]
# remove trailing slash ONLY if it is not an existing folder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# rewrite to FILENAME.php if such file does exist and is not a folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L,QSA]
悲しいことに、これは私の問題の1つを修正するだけであり、それを見た後、これを行うためのより良い方法があると感じています...