mod-rewrite
Основные внутренние перезаписи
Поиск…
Необычный url для php-скрипта
В этом примере мы переписываем URL-адрес формы http://example.com/topic/id-seoname
скрипту php, который принимает идентификатор в качестве входного. В этом примере правило будет находиться в контексте «для каждого каталога» .
RewriteEngine on
RewriteRule ^topic/([0-9]+)-[^/]*/?$ /topics.php?id=$1 [L]
В этом примере topic/
является общим префиксом всех тем. За ним следует номер, который используется скриптом. Наконец, отображается имя seo. Это имя seo игнорируется mod_rewrite, потому что оно существует только для SEO-причин. Второй аргумент RewriteRule
содержит URL для переписывания. Заполнитель $1
заменяется содержимым первой группы захвата в регулярном выражении перед ним. В этом случае он будет заменен на то, что соответствует ([0-9]+)
.
Url с строкой запроса в php-скрипт
Чтобы соответствовать строке запроса, условие должно быть добавлено в RewriteRule
. Это делается путем размещения директив RewriteCond
перед соответствующим правилом. В следующем примере мы динамически внутренне переписываем старый URL-адрес на новый URL-адрес.
RewriteCond %{QUERY_STRING} ^name=([^&]*)$
RewriteRule ^oldscript\.php$ newscript.php?username=%1 [L]
Обратите внимание, что для соответствия буквальной точке мы должны избегать ее слэш. %1
заменяется первой группой захвата предыдущего условия. В этом случае он заменяется на все, что соответствует ([^&]*)
.