Назад | Перейти на главную страницу

Apache2, перенаправлять на домашнюю страницу, когда вы посещаете папку с точным именем

Проблема

В apache, как я могу перенаправить на домашнюю страницу, если вы перейдете к точной строке, но все, что находится за этой строкой, должно отображаться нормально, без перенаправления.

Пример.

http://example.com/STRING -> go to homepage
http://example.com/STRING_PAGE -> go to http://example.com/STRING_PAGE

Я попытался

Redirect 301 /STRING http://example.com/

Но в этом случае страница также перенаправляется на домашнюю, например, в случае http://example.com/STRING_PAGE.

Спасибо.

Вместо того, чтобы использовать mod_alias и это Перенаправить директива, вы можете использовать mod_rewrite используя RewriteRule с RewriteCond:

RewriteEngine On
RewriteCond %{REQUEST_URI}  !^/STRING_PAGE [NC]
RewriteRule ^/?STRING       / [R=301,NC,L]

Это перенаправляет все запросы, начиная с /STRING или STRING, но не начиная с /STRING_PAGE. Матч на ведущую косую черту ^/ требуется, если правило определено в VirtualHost контексте и должен быть опущен в <Directory/> или .htaccess контекст. Просто проще использовать /? чтобы сделать его необязательным, поэтому правило можно использовать в обоих.

В NC flag используется для совпадений без учета регистра и L прекращает обработку любых следующих правил.

Вам нужно включить mod_rewrite (sudo a2enmod rewrite), чтобы использовать это.