Если вы выберете правило перезаписи Apache, а не отображение / фильтр сервера приложений (как я сделал), вы также можете захотеть сделать больше, чем просто искать "^ ([0-9a-zA-Z] +) $ "
Возможно, вы захотите подтвердить, что URL-адрес не является каталогом или файлом, который существует, если apache работает и обслуживает ресурсы не-jsp. И подтвердите, что JSP существует, и выполните передачу, а не перенаправление, и добавьте любую возможную строку запроса.
RewriteCond %{REQUEST_URI} !^/.*\.(jsp)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.jsp -f
RewriteRule ^(.+)$ /$1.jsp [PT,QSA,L]
И чтобы убедиться, что пользователи видят это только через / search, а не /search.jsp, тогда вы также хотите переписать обратное
RewriteRule ^(.+)\.jsp$ $1 [R=301,QSA,L]
RewriteRule ^(.+)index$ $1 [R=301,QSA,L]
Это хорошая идея для целей SEO, чтобы поисковые системы не дублировали контент по нескольким URL-адресам.