Политика htaccess no-trailing-slash: несуществующие URL (404) не должны перенаправлять

Если я открою несуществующий URL на моем сайте, например www.domain.de/abcde/ (с косой чертой), URL перенаправится на www.domain.de/abcde (без косой черты) и откроет сайт 404 после.

Но сайт 404 должен появиться непосредственно, когда URL не существует (без перенаправления для политики без косой черты).

Что мне нужно добавить в мой htaccess? Спасибо!

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

------

Предложение Starkeens работает только на чистый 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

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

Есть новые предложения?:)

2 ответа

Решение

Наконец я получил решение, которое, кажется, работает.. может быть, кто-то получил ту же проблему и нуждается в коде. Комментарии для оптимизации приветствуются!

# 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]

Теперь только существующие файлы получают перенаправление моей политики no-trailing-slash. Несуществующие файлы не перенаправляются и появляются на странице 404 напрямую, как хотелось бы.

ПЫТАТЬСЯ:

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]
Другие вопросы по тегам