Нет, я думаю, это совершенно нормально. Модуль mod_rewrite имеет довольно неясный синтаксис, и это может быть очень неприятно.
То, что вы хотите, может быть написано так:
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule (.*) $1.html
Сначала мы включаем механизм перезаписи. Затем есть директива RewriteCond: если это условие принимает значение true, будет применено одно правило RewriteRule, следующее за ним. Синтаксис RewriteCond прост: RewriteCond <subject> <regex pattern>
; условие будет оценено как истинное, если шаблон соответствует теме. В нашем случае шаблоном является переменная сервера с именем REQUEST_URI, которая может быть вам знакома по PHP, она содержит URI, запрошенный пользователем. Шаблон здесь - это регулярное выражение \.html$
. \ здесь - это escape-символ, чтобы избежать точки, которая, как вы, возможно, знаете, имеет особое значение в регулярном выражении («соответствует любому символу»); знак $ означает конец строки; ! отрицает все выражение, поэтому условие будет истинным, если следующий за ним шаблон не совпадает. Итак, строка RewriteCond гласит: «Если запрошенный URI не заканчивается строкой .html».
Затем следует директива RewriteRule. Его синтаксис RewriteCond <from> <to> [optional flags]
. Часть «от» представляет собой шаблон регулярного выражения, который необходимо сопоставить. Часть «Кому» — это строка, в которую мы перепишем исходный запрос. В нашем конкретном примере from — это (.*)
: файл . означает «любой символ», звездочка означает «любое время», поэтому мы в основном говорим «любое количество любых символов», что означает, что мы хотели бы захватить весь путь. Мы помещаем его в круглые скобки, чтобы иметь возможность ссылаться на захваченную часть позже. Затем мы перепишем это в: $1.html
, где $1 относится к первой строке, которую мы захватили в части «от».
И все: когда мы напишем «example.com/something» в адресной строке, будет обслуживаться страница «example.com/something.html».
Конечно, это очень просто, и его можно было бы значительно улучшить, чтобы сделать его более элегантным и прочим, но это должно помочь вам начать. Есть много полезных руководств, и документы также очень полезны.
28.05.2012