2011-05-18 3 views
2

Я хочу, чтобы достичь чего-то вроде этого: http://example.com/year/month/day вместо http://example.com?year=yyyy&month=mm&day=ddURL Rewrite для года, месяца и дня

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

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

ответ

3

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

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

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 
+1

Вы должны * указать номер месяца и дня в своем скрипте. –

+0

@Teneff Нет, поскольку после двух последних цифр должно быть 'EOL'. –

+0

Это отлично работает, просто вам придется подумать о дополнительной косой чертой в конце :) – Teneff

2

лучшее, что я могу думать, это:

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] 
+0

большое спасибо, я заметил, что если 01 написан как 1, он не работает, PLS, как я могу исправить это; кроме того, если я хочу работать только год и месяц, я удаляю '(0 [1-9] | 10 | 11 | 12) /'? –

Смежные вопросы