htaccess 无尾部斜杠策略:不存在的 url (404) 不应重定向

htaccess no-trailing-slash policy: non existing urls (404) should not redirect

如果我在我的网站上打开一个不存在的 url,例如 www.domain.de/abcde/(带有尾部斜杠),url 会重定向到 www.domain .de/abcde(没有尾部斜杠)并在之后打开 404 站点。

但是当 url 不存在时,404 站点应该直接出现(没有为非尾部斜线策略重定向)。

我需要向我的 htaccess 添加什么?谢谢!

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

------

starkeens suggestion 只适用于干净的 htaccess,但我得到了更多代码。它不能与其他线路一起使用。所有代码:

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

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

有什么新的建议吗? :)

尝试:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ - [R=404,L]

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

最后我得到了一个似乎有效的解决方案..也许有人遇到了同样的问题并且需要代码。欢迎评论优化!

# trailing Slashes

# to enforce a no-trailing-slash policy with subfolder
# is the request for a non-existent file?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# if so, skip the next RewriteRule
RewriteRule .? - [S=1]

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

现在 只有现有文件 获得我的无尾部斜杠政策的重定向。 不存在的文件 不会被重定向,而是直接出现 404 页面,如您所愿。