Перезапись URL через Wordpress Rewrite или .htaccess

Прыжок для редактирования8, чтобы увидеть, как я решил это

Допустим, у меня есть блог Wordpress:www.animals.com, У меня есть определенный файл PHP в моей директории темы:www.animals.com/wp-content/themes/mytheme/db.php, Кроме того, у меня есть пользовательский шаблон для этой страницы, поэтому я создаю новую страницу в панели администрирования Wordpress, чтобы показатьdb.php: www.animals.com/database.

Поэтому, если я хочу прочитать что-нибудь о львах, я просто перейду к:www.animals.com/database/?animal=lion (потому что именно так я решил написать PHP, вставив в запрос значение из $ _GET ['animal'], используя PDO и т. д.).

Теперь я хотел бы получить доступwww.animals.com/database/?animal=lion какwww.animals.com/lion.

Должен ли я использовать .htaccess или Wordpress Rewrite? Где я должен разместить мой .htaccess, в корне папки Wordpress (с wp-config.php и этими файлами) или в каталоге моей темы?

Тот из корня имеетRewriteBase / и прочее из Wordpress по умолчанию. Что мне написать, чтобы добиться того, чего я хочу? Должен ли я поставить его до или после существующего кода?

РЕДАКТИРОВАТЬ: это моеpublic_html .htaccess и это то, что ядействительно хочу сделать: у меня есть сайт:www.domain.com и когда вы печатаете этоhttp://www.domain.com/dios/?dios=agni он показывает вам информацию о боге Агни. Я хотел бы напечататьwww.domain.com/dioses/agni чтобы получить информацию о боге Агни. Файл PHP находится вwww.domain.com/wp-content/themes/smitespain/dios.php Не работает х_х

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dioses/(\w*)$ dios/?dios=$1 [NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

EDIT2: я использую мультисайт(проверьте EDIT4)и снова / database / / dios / и / dioses / являютсяне фактические папки, которые я создал, вот название страницы, которую я создал в Wordpress. Дело в том, что теперь в заголовке вкладки отображается имя бога: S означает, что переменная $ _GET ['dios'] установлена, но не загружает файл (dios.php) = /

EDIT3Мне нужно получить доступ к domain.com/dios/?dios=agni специально, потому что это URL, который позволит PHP-файлу (dios.php) загружать get_header () из WordPress, поэтому я не могу получить доступ к файлу напрямую

EDIT4: Я решил убрать мультисайтовую вещь

EDIT5Это WordPress страницы, которые у меня есть:domain.com/dioses/ за(www.domain.com/wp-content/themes/smitespain/dioses.php)
domain.com/dios/?dios=thor за(www.domain.com/wp-content/themes/smitespain/dios.php)

EDIT6: Я читал что-то в WordPress Codex .. и понял, что если я хочу пойти вdomain.com/dioses я могу получить к нему доступ, зайдя вdomain.com/index.php?pagename=dioses или жеdomain.com/?pagename=dioses
Итак, я добавил это междуRewritebase / и следующее правило:RewriteRule example/test ?pagename=dioses а такжеdomain.com/example/test перенаправляет меня наdomain.com/dioses но это также меняет URL в адресной строке :(
Дело в том, если я попробую это:RewriteRule example/test ?pagename=dios&dios=thor он отправит меня на страницу «dios» без «? dios = thor»

EDIT7: я начал использовать переписывание WordPress, я добавил это в функции моей темы.

function my_rewrite_rules() {  
    add_rewrite_rule(  
        'blah',
        'index.php?pagename=dios&dios=agni',  
        'top'  
    );  
}  
add_action( 'init', 'my_rewrite_rules' );

и снова .. он загружает страницу dios, без? dios = agni

EDIT8: и вот наконец мне удалось заставить его работать =)
первое, что мне нужно было знать, это новый?dios=XXXX больше не будет доступен для$_GET['dios'] вместо этого вам нужно позвонить$wp_query->query_vars['dios'] поэтому я добавил это в functions.php моей темы

function add_query_vars($new_var) {
$new_var[] = "dios";
return $new_var;
}
add_filter('query_vars', 'add_query_vars');

function add_rewrite_rules($rules) {
$new_rules = array('([^/]+)' => 'index.php?pagename=dios&dios=$matches[1]');
$rules = $new_rules + $rules;
return $rules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');

я удостоверюсь$wp_query->query_vars['dios'] на самом деле установлен
тогда я просто добавляю обычное правило

Ответы на вопрос(3)

Ваш ответ на вопрос