Переписать GET переменную в URL - PullRequest
0 голосов
/ 13 июля 2011

Я использую структуру постоянных ссылок WordPress% category% /% postname% / со следующим htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

URL-адрес принимает форму http://www.example.com/category/postname/. У меня есть плагин, в котором, если вы добавите ?m=gallery к URL, он приведет вас в галерею сообщений. Итак, http://www.example.com/category/postname/?m=gallery приводит вас в галерею. Я хотел бы иметь возможность использовать http://www.example.com/category/postname/gallery/ вместо. Что мне нужно изменить в моем htaccss для достижения желаемых результатов? Я бы предположил, что это будет что-то вроде этого RewriteRule ^(.+)/gallery$ $1?m=gallery

Редактировать - Текущий htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^(.+)/gallery/$ $1/?m=gallery [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

1 Ответ

1 голос
/ 13 июля 2011

Учитывая приведенный вами пример URL (http://www.example.com/category/postname/gallery/ => http://www.example.com/category/postname/?m=gallery), вам понадобится строка такого типа:

RewriteRule ^(.+)/gallery/$ $1/?m=gallery [QSA]
  1. Добавлены пропущенные косые черты /

  2. Добавлен флаг [QSA] (на самом деле может и не понадобиться).

Вам нужно поместить это правило где-то сверху: после этой строки, например: RewriteRule ^index\.php$ - [L]

Очевидно, вы гарантируете, что WordPress будет генерировать URL-адреса такого типа: http://www.example.com/category/postname/gallery/

...