web-dev-qa-db-ja.com

「偽の」フォルダーの最後に強制的に末尾のスラッシュを付ける

ここで見つけた作業コードは、ほとんどすべてにスラッシュを使用しています。

これらの "偽のディレクトリ"(書き換えスキーム(ディレクトリのみ)の一部)の末尾のスラッシュを強制し、他のすべて(.htmlで終わる偽のファイル)をそのまま保持する必要があります。

これが私の.htaccessです:

RewriteEngine on

RewriteCond %{HTTP_Host} !^www.example.com [nc]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

DirectoryIndex index.php?category=1

Options -Indexes

RewriteRule ^album/([0-9]+)$ /index.php?p=$1&opc=4
RewriteRule ^album/$ /index.php?p=1&opc=4

RewriteRule ^album/(.*)-(.*).html /view.php?id=$2&lang=$1

RewriteRule ^search/(.*)/$ /index.php?lang=en&search=$1  [L,QSA]
RewriteRule ^channels/(.*)/$ /index.php?lang=en&channel=$1  [L,QSA]
RewriteRule ^(.*)/favorites/$ /index.php?lang=en&favorites=$1  [L,QSA]
RewriteRule ^(.*)/likes/$ /index.php?lang=en&likes=$1  [L,QSA]
RewriteRule ^(.*)/albums/(.*)/$ /index.php?lang=en&albumid=$2|$1  [L,QSA]
RewriteRule ^(.*)/albums/$ /index.php?lang=en&album=$1  [L,QSA]
RewriteRule ^albums/$ /index.php?lang=en&album=all  [L,QSA]

RewriteRule ^newest/$ /index.php?opc=1&lang=en  [L,QSA]
RewriteRule ^popular/$ /index.php?opc=2&lang=en  [L,QSA]
RewriteRule ^best/$ /index.php?opc=3&lang=en  [L,QSA]

RewriteRule ^categories/$ /index.php?category=1  [L,QSA]
RewriteRule ^categories/([0-9]+)$ /index.php?p=$1&category=1  [L,QSA]
RewriteRule ^categories/(.*)/$ /index.php?lang=en&categories=$1  [L,QSA]
RewriteRule ^categories/(.*)/([0-9]+)$ /index.php?lang=en&categories=$1&p=$2  [L,QSA]
1

スラッシュを追加するにはリダイレクトする必要があります。これにより、スラッシュやドットなどの他の句読点なしで文字のセットがリダイレクトされます。他の書き換えルールと競合することはないと思います。

RewriteRule ^((.*/)?[a-z]+)$ http://www.example.com/$1/ [R=301,L]

ディスク上の既存のファイルと一致しないようにすることで、少し安全にすることができます。これを行うには、次の2つの条件を追加します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

または、「偽の」ディレクトリごとに個別のルールを設定することもできます。

RewriteRule ^(album|categories|newest|best)$  /$1/ [R=301,L]
RewriteRule ^((search|categories)/[^/]+)$  /$1/ [R=301,L]
RewriteRule ^(.*/(favorites|likes|albums))$  /$1/ [R=301,L]
RewriteRule ^(.*/albums/[^/]+)$  /$1/ [R=301,L]
2

「偽フォルダ」または「パーマリンク」は、Wordpressでよく使用されます。これらは、[設定]-> [パーマリンク]のWPバックエンドから設定します。URLバーでの表示方法をいくつか選択できます。すべての「きれいな」オプションには、末尾のスラッシュが含まれます。 http://your_site.com/sample-post/-通常、これはページの読み込み速度に影響を与えません。ただし、そのページに<a id="index">Link</a>を挿入した「target-post」という名前のページにインデックスを作成する場合、http://another_site.comからのリンクが<a href="http://your_site.com/target-post#index">の形式である場合、Wordpressは末尾のスラッシュを追加します-結果はインデックスは機能しません。

これを回避する方法は、WPバックエンドおよびhttp://your_site.com/%postname%でカスタム構造を選択することです。 NO末尾のスラッシュ。インデックス付きリンクが機能します。

ページの読み込みパフォーマンスに関する限り、ログを見て、URLを手動で入力すると301(リダイレクト)になりましたWITHスラッシュと200(成功)なしで変更後のスラッシュ。以前(つまり、Wordpressをスラッシュに入れて)、301 なし it 200 WITH itを得ました。

要するに、Wordpressでは、「パーマリンク」にスラッシュが含まれているかどうかは関係ありません。-インデックス付きリンクを他のページに使用する場合。

1
Steve GS