Как указали Cags , если вы определяете свои правила в файле .htaccess
, вам необходимо убедиться, что пути не содержат косую черту.Кроме того, вам, вероятно, нужно убедиться, что вы используете флаг L
, а также располагаете правила перенаправления над разделом переписывания WordPress, поскольку обе эти вещи могут в итоге привести к конфликту.
Дляпример:
RewriteRule ^/?show.cfm/FG3f4-30F1G/$ http://www.mysite.com/john-smith [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Если вы хотите использовать RewriteMap
, вам необходимо определить его в конфигурации вашего сервера или виртуального сервера.Обычно это проблема для большинства людей, но, поскольку вы указали, что используете VPS, я бы предположил, что у вас есть необходимый доступ.Обратите внимание, что по соображениям эффективности было бы также полезно поместить все ваши директивы mod_rewrite
, поскольку .htaccess
необходимо анализировать для каждого запроса (но конфигурация сервера обрабатывается только при запуске).
Определение карты сервера будет выглядеть следующим образом: httpd.conf
(или эквивалент):
RewriteMap redirect-map txt:/full/path/to/file/pathmap.txt
Затем вы измените свое правило соответствующим образом:
RewriteRule ^/?(show\.cfm/[A-Za-z0-9-]+/)$ http://www.example.com/${redirect-map:$1} [R=301,L]
... сpathmap.txt
выглядит примерно так:
# Input Replacement
show.cfm/FG3f4-30F1G/ john-smith
show.cfm/ABC12-40000/ jane-doe
...