2016-04-02 8 views
0

私はhtaccesにいくつかのルールを持っていますが、すべてstackoverflowや他のサイトの助けを借りて学習します。しかし今、私はURLに後続のスラッシュを追加するルールを追加して(重複したコンテンツをふりかえるために)接尾辞を付けずに、問題が始まり、決して終わりのないループが発生します。 htaccessリダイレクトネストはトラブルの後続のスラッシュを必要とします

RewriteEngine on 
RewriteBase/

# redirect urls without www. to url with www. 
RewriteCond %{HTTP_HOST} ^domain\.de$ 
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301] 

# hide the suffix of urls 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.html\ HTTP/ 
RewriteRule (.*).html$ /$1 [R=301,L] 

# start redirect everything to the subfolder 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.de [NC] 
# except these folders: 
RewriteCond %{REQUEST_URI} !^/downloads [NC] 
RewriteCond %{REQUEST_URI} !^/cms [NC] 
RewriteCond %{REQUEST_URI} !^/vorschau [NC] 

RewriteCond %{REQUEST_URI} !^/domain/.*$ 
RewriteRule ^(.*)$ /subfolder/$1 
# end redirect everything to the subfolder 

は、今私は最後のスラッシュを追加するための この新しいルールを追加したかったが、その後、これらのネストされたルールは一緒に動作しません:

これらは私が私のhtaccesになったルールはあります!

したがって、www.domain.de/testには末尾にスラッシュが自動的に付きます。それ以外の方法では、末尾にスラッシュがあるURLはのないURLにリダイレクトする必要があります(どちらの方が良いか分かりません)。

# Add a trailing slash to URLs that have none 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_URI} !(.*)/$ 
    RewriteRule ^(.*)$ http://www.domain.de/$1/ [L,R=301] 

誰でも手伝ってもらえますか? :) ありがとう!

答えて

0

私は、このstackoverflowのポスティングから無トレーリングスラッシュポリシーを実施する別の方法見つけた:Htaccess: add/remove trailing slash from URL

をこのコードは、私の作品:

# To enforce a no-trailing-slash policy with subfolder 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} (.+)/$ 
RewriteRule^%1 [R=301,L] 
関連する問題