私は今この.htaccess
ファイルを使用しています。URLをからwww.example.com/?page=home
に変更するだけwww.example.com/home
です。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^([\w-]+)?$ index.php?page=$1 [L]
RewriteRule ^([\w-]+)/?$ index.php?page=$1 [L]
$_GET
たとえば、さらにパラメータを追加したいと思いますwww.example.com/home/parameter1/value1/
。そしてできれば、これらのパラメータを無期限に実行できることが望ましいです。
.htaccess
単独でこれを「無期限に」行うことはできません。パラメータの最大数(N)を決定し、それぞれのディレクティブを次の順序で記述する必要があります:N、N-1、N-2、... 1.ただし、次のような後方参照の数によっても制限されます。サポートされています。すなわち。ただで$1
に$9
、あなたは含めてのあなたの方法で使用して、4つのパラメータに限定されているパラメータ名をだけでなく、URLパスにします。
例えば:
# 3 additional parameters
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?page=$1&$2=$3&$4=$5&$6=$7 [L]
# 2 additional parameters
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?page=$1&$2=$3&$4=$5 [L]
# 1 additional parameter
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?page=$1&$2=$3 [L]
# No parameters (just the page)
RewriteRule ^([\w-]+)/?$ index.php?page=$1 [L]
これらはすべて、オプションの末尾のスラッシュを許可します(現在の例のように)。ただし、末尾のスラッシュが必要かどうかを判断し、どちらかを選択することをお勧めします。末尾のスラッシュをオプションにすると、コンテンツの重複が促進されます。
このURLパターンも、私の意見では少し「一般化」されすぎています。特定して、URLにパラメータ名を含めないようにするのがより一般的です。例えば:example.com/home/value1/value2/value2
-パラメータ名(param1
、param2
など)にハードコードされますRewriteRule
置換。これにより、2倍のパラメータを持つこともできます。
RewriteRule ^([\w-]+)?$ index.php?page=$1 [L] RewriteRule ^([\w-]+)/?$ index.php?page=$1 [L]
ここでは2つのディレクティブは必要ありません。(を提供することDirectoryIndex
は正しく設定されています。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加