2

以下のコードは、当サイトの /profiles/ ディレクトリ内のすべての URL を から に書き換えますがexample.com/profiles/name/example.com/name/末尾のスラッシュを削除して、結果の URL をさらに簡素化し、example.com/name最新のソーシャル メディアのようにきれいにしたいと考えています。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profiles/$1 [NC,L]

これをどのように(そして安全に)行うことができますか?Stumble upon でいくつかの解決策を見てきましたが、それらを組み合わせると機能する可能性がありますが、現在、サイトのすべてのプロファイルは、スクリプトによってその場で組み立てられるのではなく、独自の物理ディレクトリを持っています.

更新: @jon-lin は、How to access directory's index.php without a Trailing slash AND not get 301 redirectで同様の状況に対する解決策を提供しましたが、それを私たちのものに適用する方法がわかりませんでした (上記)。

4

4 に答える 4

1

あなたはやってみることができます

RewriteRule ^(.*)/+$ $1 [R=301,L]

どのURLでも機能するはずです

于 2015-10-20T05:15:21.357 に答える
0

How to access directory's index.php without a Trailing slash AND not get 301 redirect (内部的に末尾のスラッシュを元に戻す) で@jon-lin によって提案されたコードの一部を追加することで、実際にこれを機能させました。

# Vanity URLs

DirectorySlash Off

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /profiles/$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ /$1/

Gucci の FASHION NET のプロフィール ( にあります) は、 https://www.fashion.net/gucci/profiles/gucci/でアクセスできます。末尾にスラッシュはありません。ありがとう、@ジョンリン!!!!

于 2015-11-12T07:12:17.537 に答える
0

次のリダイレクトを使用します。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /(.+)/+$
RewriteRule ^ /%1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /profiles/$0 [NC,L]
于 2015-10-20T05:41:57.303 に答える