Проблема
В 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
), чтобы использовать это.