現在のURLが欲しい:
http://example.com/files/528/Rabba%20Ho%20-%20Falak%20Shabir%20Song.html
このようにきれいに見えるようにするには:
http://example.com/files/528/Rabba_Ho_-_Falak_Shabir_Song.html
これは私の現在の。htaccessファイルです:
RewriteRule ^category/([^/]*)/([^/]*)\.html$ /index.php?pid=$1&ht=$2 [L]
RewriteRule ^category/([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?pid=$1&page=$2&ht=$3 [L]
RewriteRule ^category/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?sort=$1&pid=$2&page=$3&ht=$4 [L]
RewriteRule ^filedownload/([^/]*)/([^/]*)/([^/]*)\.html$ /fileshow.php?pid=$1&id=$2&ht=$3 [L]
エンコードされたスペースとアンダースコアを書き換えるように変更するにはどうすればよいですか?
StackOverflowに関する同様の質問を次に示します。 mod_rewrite:アンダースコアをダッシュに置き換えます
回答を修正して、スペース(デコードされた%20)をアンダースコアに置き換えました。 2つ以上の一致がある限り、書き換えルールを再帰的に適用し、1つしか存在しない場合は、別の書き換えルールがリダイレクトを実行します。
RewriteEngine On
RewriteRule ^(/?files/.*/[^/]*?)\s([^/]*?\s[^/]*)$ $1_$2 [N]
RewriteRule ^(/?files/.*/[^/]*?)\s([^/\s]*)$ /$1_$2 [R=301]
他の人がコメントしているように、アプリケーションがURLパスにアンダースコアを期待し、アンダースコアを持つURLを生成していることを確認する必要があります。
最初に私の悪い英語についてすみません。 PHPアプリリンクでこれを使用します。
<?php $theURL = "http://example.com/files/528/Rabba Ho - Falak Shabir Song.html"; ?>
<a href="<?= str_replace( " ", "_", $theURL ); ?>" target="_blank">
Rabba Ho - Falak Shabir Song
</a>
編集:最後のエラーでごめんなさい、今編集しています...
上記のコードは次のようなURLを返します。
http://example.com/files/528/Rabba_Ho_-_Falak_Shabir_Song.html.