1

すべてのフォルダーのindex.phpにスクリプトがあります

次のようなきれいな url/seo フレンドリーな url を作成する必要があります: site.com/folder1/something.html

今、私はこのような醜いURLを持っています: site.com/folder1/index.php?category=something

この部分index.php?category=somethingは常にすべてのサブフォルダーで同じです。something.html

もう一度:index.php?category=1$それを見つけて置き換え1$.html ます。他には何も触れないでください。URLのこの部分だけです

だから私が訪問するとき:

site.com/another-subfolder/and-one-more-folder-here/index.php?category=something

アドレスバーでこれを見る必要があります:

site.com/another-subfolder/and-one-more-folder-here/something.html

私はあなたがそれを得る願っていますか?

folder1ルートのhtaccessでこれを試しました

RewriteRule ^folder1/(.*).html$ folder1/index.php?category=$1 [L,R=301]

これは機能しますが、次のようにサイト全体のすべてのサブフォルダーでこれを機能させるにはどうすればよいですか:

site.com/folder145/index.php?category=something
site.com/subfolder/index.php?category=something
site.com/another-subfolder/and-one-more-folder-here/index.php?category=something

異なる名前のサブフォルダーが何千もあるため、サブフォルダーごとに手動で RewriteRule を作成しても機能しません

どんな助けでも大歓迎です

4

1 に答える 1

0

index.php?category=まず、フォームからフォームに生成するすべてのリンクを変更する必要がありますcategory.html

次に、ドキュメント ルートの htaccess ファイルに次のルールを追加category.htmlして、フォームをフォームに内部的に書き換えindex.php?category=ます。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?/)?([^/]+)\.html$ /$1index.php?category=$2 [L]

次に、制御できないリンク (または FORM を使用して生成されたリンク) を指定するには、index.php?category=フォーム内のリンクへの直接アクセスを外部からリダイレクトします。

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ (/.*?)?/index\.php\?category=([^&\ ]+)
RewriteRule ^(.+?/)?index\.php$ /$1%3.html? [L,R=301]  

これは、すべてのサブディレクトリと一致する必要があります。

于 2013-02-20T18:28:04.723 に答える