Переписать URL-адрес на год, месяц и день


Я хочу добиться чего-то подобного: http://example.com/year/month/day вместо http://example.com?year=yyyy&month=mm&day=dd

Я хочу, чтобы он переписывался только тогда, когда совпадения являются только числами, когда первый сегмент (год) имеет 4-значный номер, 2-й сегментный месяц находится между 01 и 12 (месяцы года d), последний сегмент (день) находится между 01 и 31 (дни в месяце).

Пожалуйста, как я могу этого добиться

Author: Ogugua Belonwu, 2011-05-18

2 answers

Я думаю, что вы должны проверить номер месяца и дня в своем скрипте. Но вот регулярное выражение.

Обновлено, чтобы соответствовать дню или месяцу с одной цифрой с дополнительной косой чертой.

RewriteRule ^(\d{4})/(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])/?$ ?y=$1&m=$2&d=$3

Только для года и месяца с дополнительной косой чертой.

RewriteRule ^(\d{4})/(0?[1-9]|1[0-2])/?$ ?y=$1&m=$2
 3
Author: Timofey Stolbov, 2011-05-18 08:50:16

Лучшее, что я могу придумать, это следующее:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\d{4})/(0[1-9]|10|11|12)/(0[1-9]|[12][0-9]|3[01])/?$  index.php?y=$1&m=$2&d=$3 [L]
 2
Author: Teneff, 2011-05-18 08:19:39