Вы можете выбрать простой маршрут и просто избежать перезаписи, если файл существует:
RewriteRule ^news/([0-9]+)$ /news/$1/ [R=301,L]
# Ignore the RewriteRule if the request points to a file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !=tags [NC]
RewriteRule ^news/([a-zA-Z0-9_-]+)/.*$ /news/story.php?id=$1
В качестве альтернативы, если вы хотите выполнить проверку каталога в случае, если запрос ресурса не указывает на реальныйфайл, но должен напрямую генерировать ответ 404, вы можете попробовать следующее:
RewriteRule ^news/([0-9]+)$ /news/$1/ [R=301,L]
# Check if the path segment after /news/ corresponds to an existing directory
# and if so, don't perform the rewrite
RewriteRule %{DOCUMENT_ROOT}/news/$1/ !-d
RewriteCond $1 !=tags [NC]
RewriteRule ^news/([a-zA-Z0-9_-]+)/.*$ /news/story.php?id=$1