htaccess 重定向嵌套导致麻烦 - 需要尾部斜线
htaccess redirect nestings causes trouble - trailing slash needed
我的 htacces 中有一些规则,一切都是在 Whosebug 和其他网站的帮助下边做边学。但是现在我想添加一条规则,用于在没有后缀的 urls 中添加尾部斜杠(以假装重复内容),问题开始了 - 并且出现了一个永无止境的循环。
这些是我在 htacces 中得到的规则:
RewriteEngine on
RewriteBase /
# redirect urls without www. to url with www.
RewriteCond %{HTTP_HOST} ^domain\.de$
RewriteRule ^(.*)$ http://www.domain.de/ [L,R=301]
# hide the suffix of urls
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.html\ HTTP/
RewriteRule (.*).html$ / [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/
# end redirect everything to the subfolder
现在我想添加这个用于添加尾部斜线的新规则,但是这些嵌套规则不能一起工作!
所以 www.domain.de/test 应该自动得到一个尾部斜线。或者反过来:每个 url 带尾部斜杠的都应该重定向到没有 的那个(我不知道哪种方式更好!)。
# Add a trailing slash to URLs that have none
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.de// [L,R=301]
谁能帮帮我? :)
谢谢!
我发现了另一种方法来执行此 Whosebug 发布中的无尾部斜线政策: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]
我的 htacces 中有一些规则,一切都是在 Whosebug 和其他网站的帮助下边做边学。但是现在我想添加一条规则,用于在没有后缀的 urls 中添加尾部斜杠(以假装重复内容),问题开始了 - 并且出现了一个永无止境的循环。
这些是我在 htacces 中得到的规则:
RewriteEngine on
RewriteBase /
# redirect urls without www. to url with www.
RewriteCond %{HTTP_HOST} ^domain\.de$
RewriteRule ^(.*)$ http://www.domain.de/ [L,R=301]
# hide the suffix of urls
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.html\ HTTP/
RewriteRule (.*).html$ / [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/
# end redirect everything to the subfolder
现在我想添加这个用于添加尾部斜线的新规则,但是这些嵌套规则不能一起工作!
所以 www.domain.de/test 应该自动得到一个尾部斜线。或者反过来:每个 url 带尾部斜杠的都应该重定向到没有 的那个(我不知道哪种方式更好!)。
# Add a trailing slash to URLs that have none
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.de// [L,R=301]
谁能帮帮我? :) 谢谢!
我发现了另一种方法来执行此 Whosebug 发布中的无尾部斜线政策: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]