Как перенаправить определенную страницу постоянных ссылок WordPress на другую в .htaccess? - PullRequest
1 голос
/ 29 ноября 2011

У меня есть этот файл .htaccess, созданный Wordpress и плагином электронной коммерции:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^.products/images/(\d+)/?\??(.*)$ /wp-content/plugins/shopp/core/image.php?siid=$1&$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Теперь мне нужно перенаправить того, кто посещает http://mydomain.com/golf, на http://mydomain.com/products/category/golf/

У меня есть эти правила в блоке над существующим блоком, который частично обрабатывается:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^golf.*$ products/category/golf/ [R=permanent,L]
RewriteRule ^cycling.*$ products/category/cycling/ [R=permanent,L]
#...etc
</IfModule>

Проблема в том, что, если кто-то, например, набирает http://mydomain.com/golfshoes, он все еще перенаправляет.Я пытался играть с подстановочными знаками и т. Д., Но не могу заставить его разрешить только / golf и / golf /

Кроме того ... это самый эффективный способ установки этих правил?Я должен делать что-то вроде перенаправления, если или если или если тогда?

Спасибо :) Бен

1 Ответ

2 голосов
/ 29 ноября 2011

Попробуйте изменить 2 регулярных выражения на:

RewriteRule ^golf(/.*)?$ products/category/golf/$1 [R=permanent,L]
RewriteRule ^cycling(/.*)?$ products/category/cycling/$1 [R=permanent,L]

(/.*) соответствует "/" или "/ что-то", а ? означает, что его там может не быть. $ 1 на цели указывает на то, что было найдено в скобках.Таким образом, кто-то, идущий на http://mydomain.com/golf/foo.html, будет обслужен /prodducts/category/golf/foo.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...