#regex #apache #.htaccess #mod-rewrite
#регулярное выражение #apache #.htaccess #мод-перезапись
Вопрос:
Прежде всего, это уже работает, но я хочу ограничить некоторые переменные длины. любое другое улучшение моего кода также приветствуется
RewriteEngine on
Options FollowSymlinks
RewriteBase /
RewriteRule pict/([a-z] )/([0-9] ) retpic.php?type=$1amp;id=$2 [L]
RewriteRule pc/(.*) pcs/$1 [L]
RewriteRule ^([a-z] )/([0-9] ) index.php?ln=$1amp;id=$2 [L]
RewriteCond %{REQUEST_URI} !=/index.php
RewriteCond %{REQUEST_URI} !=/retpic.php
RewriteCond %{REQUEST_URI} !^/pcs/.*$
RewriteCond %{REMOTE_HOST} !^11.11.11.11
RewriteRule . index.php [L]
retpic.php распределяет мои изображения, где:
([a-z] )
это двухбуквенный индикатор размера и типа изображения
([0-9] )
это 6-разрядный идентификатор того, какое изображение я хочу
возможно ли ограничить их длиной не более 2 и 6 символов?
то же самое относится и к моему индексу: ([a-z] )
индикатор языка из 2 букв (en, de, li, nl) ([0-9] )
представляет собой 6-разрядный идентификатор страницы, которую нужно отобразить.
папка pcs содержит мои файлы css и js в многоуровневой структуре папок и должна быть свободно доступна
последняя часть, которую я использую для перенаправления всех ошибочных URL-адресов в мой индекс, за исключением моего текущего IP-адреса, чтобы я мог получить доступ к моей cms
Ответ №1:
Вы можете использовать конструкцию range regex {...}
для принудительной длины:
RewriteEngine on
Options FollowSymlinks
RewriteBase /
RewriteRule pict/([a-z]{2})/([0-9]{6})/?$ retpic.php?type=$1amp;id=$2 [L,QSA]
RewriteRule pc/(.*)$ pcs/$1 [L]
RewriteRule ^([a-z]{2})/([0-9]{6})/?$ index.php?ln=$1amp;id=$2 [L,QSA]
RewriteCond %{REQUEST_URI} !=/index.php
RewriteCond %{REQUEST_URI} !=/retpic.php
RewriteCond %{REQUEST_URI} !^/pcs/.*$
RewriteCond %{REMOTE_HOST} !^11.11.11.11
RewriteRule . index.php [L]
Комментарии:
1. Отлично, что работает как шарм. только почему вы добавляете $ к pc /(.*)? и почему при использовании QSA у меня сложилось впечатление, что это в основном используется для тестирования?
2. Всегда пожалуйста.
QSA
флаг (Добавление строки запроса) сохраняет существующие параметры запроса при добавлении нового.