私は2つのパラメータを持つURLを持っていて、htaccessファイルに書き直しました。
RewriteRule ^subscriber/([^/.]+)/([^/.]+)/?$ subscriber/index.php?id=$1&name=$2 [NC,L]
場合によっては、名前に「/」が含まれていることがあります。これは、ブラウザーが別のパラメーターのように処理し、404 ページが表示されます。htaccess ファイルを使用して "/" を別のものに置き換える方法はありますか?
私は2つのパラメータを持つURLを持っていて、htaccessファイルに書き直しました。
RewriteRule ^subscriber/([^/.]+)/([^/.]+)/?$ subscriber/index.php?id=$1&name=$2 [NC,L]
場合によっては、名前に「/」が含まれていることがあります。これは、ブラウザーが別のパラメーターのように処理し、404 ページが表示されます。htaccess ファイルを使用して "/" を別のものに置き換える方法はありますか?
これをドキュメントルートのhtaccessファイルに入れてみてください。
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)name=([^&]*)/(.*)$
RewriteRule ^ %{REQUEST_URI}?%1name=%2-%3 [L]
# Change your existing rule a bit to account for the slash (plus a possible trailing slash):
RewriteRule ^subscriber/([^/.]+)/(.+?)/?$ /subscriber/index.php?id=$1&name=$2 [NC,L]
これにより、URIの最初の「フォルダー」がsubscriber /、id
paramの後に作成され、その後のスラッシュを除くすべてname
がparamになります。次に、最初のルールセットは、パラメータを繰り返しクリーンアップし、。name
に置き換えます。/
-
name 変数を設定するときに urlencode() 関数を使用できます
$name = 'Michael/';
$name = urlencode($name);
// will return you Michael%08 or something like this
したがって、この質問では、.htaccess の解決策は次のようになります。
RewriteEngine On
RewriteCond %{REQUEST_URI} (.*)\\(.*)
RewriteRule .* %1/%2 [R=301]