Но доступ к
blockquote>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]
Должно работать, но это не так.
blockquote>WordPress направляет URL-адрес на основе исходного URL-адреса запроса (т. е. значения суперглобального PHP
), а не переписанного URL-адреса. Так что, да, это «вещь WordPress». Вам нужно создать дополнительный «маршрут» для этого URL (не переписывать его). Однако это потенциально создает проблемы с дублированным контентом и т. Д.
Но доступ к [113] просто перенаправляет на [114]. Мне интересно, почему он перенаправляет, поскольку я не использовал флаг [115].
blockquote>Если вы укажете абсолютный URL (т.е. схема + имя хоста) в подстановке [116] , то Apache неявно вызовет внешнее (302) перенаправление независимо от того, явно включен флаг [117] или нет.
[110]Должно работать, но это не так.
blockquote>WordPress направляет URL-адрес на основе исходного URL-адреса запроса (т. е. значения суперглобального PHP [118]), а не переписанного URL-адреса. Так что, да, это «вещь WordPress». Вам нужно создать дополнительный «маршрут» для этого URL (не переписывать его). Однако это потенциально создает проблемы с дублированным контентом и т. Д.
Однако, если вы изменяете существующий URL, который, возможно, был связан с поисковыми системами и проиндексирован, тогда это, вероятно, должно быть внешним перенаправлением 301, а не внутренним переписыванием.
blockquote>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]
Директива
SERVER['REQUEST_URI']RewriteBase
здесь ничего не делает. ДирективаRewriteBase
просто указывает URL-путь, который следует использовать для относительных замен пути.Однако, если вы изменяете существующий URL, который, возможно, был связан с поисковыми системами и проиндексирован, тогда это, вероятно, должно быть внешним перенаправлением 301, а не внутренним переписыванием.
[111] blockquote>Это можно упростить до одной директивы:
[112]Директива
RewriteBase
здесь ничего не делает. ДирективаRewriteBase
просто указывает URL-путь, который следует использовать для относительных замен пути.