3

私は2つのパラメータを持つURLを持っていて、htaccessファイルに書き直しました。

RewriteRule ^subscriber/([^/.]+)/([^/.]+)/?$ subscriber/index.php?id=$1&name=$2 [NC,L]

場合によっては、名前に「/」が含まれていることがあります。これは、ブラウザーが別のパラメーターのように処理し、404 ページが表示されます。htaccess ファイルを使用して "/" を別のものに置き換える方法はありますか?

4

2 に答える 2

1

これをドキュメントルートの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 /idparamの後に作成され、その後のスラッシュを除くすべてnameがparamになります。次に、最初のルールセットは、パラメータを繰り返しクリーンアップし、。nameに置き換えます。/-

于 2012-08-06T05:25:47.630 に答える
0

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]
于 2012-08-06T05:07:44.943 に答える