Как я могу перенаправить пользователей с URL-адреса на другой, используя regex и htaccess? - PullRequest
1 голос
/ 21 февраля 2020

Я хочу перенаправить пользователей с www.example.com/ANYTHING на www.example.com.

Является ли .htaccess лучшим способом сделать это? Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Вам потребуется использовать mod_rewrite RewriteRule (в отличие от псевдонима мода RedirectMatch), чтобы избежать конфликтов с mod_dir и DirectoryIndex* 1 .

Например, в .htaccess (Apache 2.2 и 2.4):

RewriteEngine On

RewriteRule . / [R,L]

Одна точка соответствует что-то (ie. не документ root), и мы перенаправляем на документ root.

Однако, если документ root является веб-страницей HTML, которая ссылается на такие ресурсы, как JavaScript, CSS и Затем необходимо сделать исключения для этих ресурсов, иначе они также будут перенаправлены на root!

Например:

RewriteEngine On

RewriteCond %{REQUEST_URI} !\.(js|css|jpg|png|gif)$ [NC]
RewriteRule . / [R,L]

* 1 Директива mod_alias RedirectMatch, такая как RedirectMatch /. /, в итоге сопоставляет переписанный запрос (по mod_dir) с DirectoryIndex (например, index.php), что приводит к перенаправлению l oop.

0 голосов
/ 21 февраля 2020

Если вам действительно нужно удалить все после www.mydomain.com, то вам просто нужно удалить все, начиная с первого / до конца URL:

Поиск этого регулярного выражения

%^([^/]*).*$

и заменить на \1, как я сделал здесь . Обратите внимание, что я использовал знак % в качестве разделителя вместо /, поэтому мне не нужно экранировать / в регулярном выражении. (Я мог бы использовать любой другой доступный символ, кроме /.)

...