htaccess объединить 2 сегмента с подчеркиванием

1
задан Kayong 17 January 2019 в 09:32
поделиться

1 ответ

Но доступ к http://example.com/main/id_id просто перенаправляет на http://example.com/main/id/id. Мне интересно, почему он перенаправляет, поскольку я не использовал флаг R.

Если вы укажете абсолютный URL (т.е. схема + имя хоста) в подстановке RewriteRule , то Apache неявно вызовет внешнее (302) перенаправление независимо от того, явно включен флаг R или нет.

RewriteRule ^main/id_id$ /main/id/id/ [L]

Должно работать, но это не так.

WordPress направляет URL-адрес на основе исходного URL-адреса запроса (т. е. значения суперглобального PHP

Но доступ к [113] просто перенаправляет на [114]. Мне интересно, почему он перенаправляет, поскольку я не использовал флаг [115].

Если вы укажете абсолютный URL (т.е. схема + имя хоста) в подстановке [116] , то Apache неявно вызовет внешнее (302) перенаправление независимо от того, явно включен флаг [117] или нет.

[110]

Должно работать, но это не так.

WordPress направляет URL-адрес на основе исходного URL-адреса запроса (т. е. значения суперглобального PHP [118]), а не переписанного URL-адреса. Так что, да, это «вещь WordPress». Вам нужно создать дополнительный «маршрут» для этого URL (не переписывать его). Однако это потенциально создает проблемы с дублированным контентом и т. Д.

Однако, если вы изменяете существующий URL, который, возможно, был связан с поисковыми системами и проиндексирован, тогда это, вероятно, должно быть внешним перенаправлением 301, а не внутренним переписыванием.


RewriteBase /main/
RewriteCond %{REQUEST_URI} ^/main/id_id(.*)$
RewriteRule .* http://example.com/main/id/id%1 [L]

Это можно упростить до одной директивы:

RewriteRule ^main/id_id(.*) /main/id/id$1 [R,L]

Директива RewriteBase здесь ничего не делает. Директива RewriteBase просто указывает URL-путь, который следует использовать для относительных замен пути.

SERVER['REQUEST_URI']
), а не переписанного URL-адреса. Так что, да, это «вещь WordPress». Вам нужно создать дополнительный «маршрут» для этого URL (не переписывать его). Однако это потенциально создает проблемы с дублированным контентом и т. Д.

Однако, если вы изменяете существующий URL, который, возможно, был связан с поисковыми системами и проиндексирован, тогда это, вероятно, должно быть внешним перенаправлением 301, а не внутренним переписыванием.


[111]

Это можно упростить до одной директивы:

[112]

Директива RewriteBase здесь ничего не делает. Директива RewriteBase просто указывает URL-путь, который следует использовать для относительных замен пути.

0
ответ дан MrWhite 17 January 2019 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: