.htaccess RewriteRule (s) не работает - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь научиться использовать RewriteRule.

У меня есть 2 «страницы» (WordPress) -
domain.com/webinars/ (показывает список всех вебинаров)
и
domain.com/webinar/ (показывает конкретные данные вебинара)

Я пытаюсь установить следующие условия -

(1) domain.com/webinars/{Year}/{Month}/ загрузит /webinar/?year={Year}&month={Month}

(2) domain.com/webinar/ (без /{Year}/{Month}) загрузит /webinars/

(3) domain.com/webinar/?year={Year}&month={Month} перенаправит на /webinars/{Year}/{Month}/ и затем применит условие # 1

Это моя попытка кода

RewriteEngine On

RewriteRule ^/webinars/([0-9]+)/([A-Za-z0-9]+)/$ /webinar/?year=$1&month=$2 [NC]

RewriteRule ^/webinar/$ /webinars/

RewriteRule ^/webinar/year=(\d+)$month=([\w-]+)$ /webinars/%1/%2? [R=301,L]

Условие # 1 приводит к тому, что страница 404 не найдена

Условие № 2 показывает /webinar/, а не /webinars/

Условие № 3 остается на domain.com/webinar/?year={Year}&month={Month} и не перенаправляет

Что я делаю не так? Только другой код в моем файле htaccess является блоком WordPress по умолчанию.

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Попробуйте с приведенными ниже правилами,

RewriteCond %{REQUEST_URI} ^/webinar$
RewriteCond %{QUERY_STRING} ^year=([^/]+)&month=([^/]+)
RewriteRule ^ http://example.com/webinars/%1/%2/? [R=302]


RewriteCond %{REQUEST_URI} ^/webinars/([^/]+)/([^/]+)/$
RewriteRule ^ webinar/?year=%1&month=%2 [L,END]

RewriteCond %{REQUEST_URI} ^/webinar/$
RewriteRule ^ webinars/ [L]
0 голосов
/ 03 июля 2018

Вы можете использовать это

RewriteEngine on
# if /webinar/ is requested skip the rules and serve /webinar/ directory
RewriteRule ^webinar/?$ -  [L]
#redirect /webinar/?year={year}&month={month}
#To /webinar/year/month
RewriteCond %{THE_REQUEST} /webinar/\?year=([^\s&]+)&month=([^\s&]+) [NC]
RewriteRule ^.+$ /webinar/%1/%2? [L,R]
# rewrite new url to the old one
RewriteRule ^webinar/([^/]+)/([^/]+)/?$ /webinar/?year=$1&month=$2 [L,NC]
0 голосов
/ 03 июля 2018

Попробуйте следующее:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^webinars/([^/]+)/([^/]+) /webinar/?year=$1&month=$2 [NC]

Остальное можно сделать так же.

...