2011-07-15 24 views
2

私のサイトには2種類のリンクがあります:最初は.htmlで仕上げてあり、2番目は/で仕上げています。(スラッシュで、ファイル名が終わっていない場合.html)。.htaccessのRewriteRule、末尾にスラッシュ付き

ファイルが.htmlではない場合の書き換えルールが原因で、最後に/が追加された場合、URLは正しく書き換えられません。

同様:

それがリンクしてokです:http://mysite.com/cars/fast-cars

でもないリンクでOK:http://mysite.com/cars/fast-cars/

ので、URLは(.html/)と/ずに仕上げされたとき、私は必要なものです/またはこの場合は:

http://mysite.com/cars/fast-cars/をにリダイレクトせずに、同じページにリダイレクトする。

私は明確で、あなたはhtaccessルールで私を助けてくれることを願っています。前もって感謝します。

更新:私はここで解決策の一部を見つけました:.htaccess with or without slash

しかし、私のルールは、ディレクトリ管理者、注文者などの一部のサブディレクトリに対して有効であってはなりません。同じルールでも定義できますか?

UPDATE 2:私のようなルールをしている:

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

しかし、そのルールは、いくつかのディレクトリ(つまりためにバイパスする必要がある管理者:

RewriteRule ^cars/fast-cars$ /seopage.php?marker=fast-cars$1 

はまた、動作するルールにしようと試みました。 、注文など)。

+0

あなたの現在のルール(最近追加したルールを含む)を表示してください。好ましくはコメントで。 – LazyOne

+0

更新2として追加... – user198003

+0

どのようなフォルダ(名前はいくつか)?彼らは本当ですか?それとも、 '/ cars/fast-cars'は" virtual "ですか?そのような状態を加えることに問題はないはずです。私はそれを自分自身で明確にしようとしています。 – LazyOne

答えて

5

これはいくつかの方法で行うことができます(最適な方法を選択してください)。

1)非既存のファイルとフォルダのスラッシュ/末尾削除:

# remove trailing slash for non-existing files and folders 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ $1 [L,R=301] 

2)例外

# remove trailing slash except some folders 
RewriteCond %{REQUEST_URI} !^/(admin|orders) 
RewriteRule ^(.*)/$ $1 [L,R=301] 

3とスラッシュ/末尾削除)あなたも、これ(それを一緒に組み合わせることができます多すぎる可能性があります):

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

また、 documentation

DirectorySlash Off 
+0

私は2人が仕事をすると思います。上記のディレクトリのサブディレクトリに対しても機能しますか? – user198003

+1

はい、条件は「/ admin/dashboard/'などにも適用される'/admin'や '/ orders'でURLが始まり**/**を除いて始まり/除いています。 – LazyOne

関連する問題