htaccess регулярное выражение не добавляется получить значения - PullRequest
1 голос
/ 21 мая 2019

Прежде всего, извините за довольно тупой заголовок, я немного новичок, когда дело доходит до htaccess, так что терпите меня.Я пытаюсь создать небольшой скрипт предотвращения горячих ссылок для изображений на моем веб-сайте (вы можете просмотреть регулярное выражение с лучшим форматированием здесь :

Options -MultiViews

RewriteEngine On
# RewriteBase /

# only allow rewriting to paths that dont exist
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ruid\.php(?:/t(\d))?/r(\d{2,4})x(\d{2,4})?/([\w-]+)/?$ ruid.php?type=$1&width=$2&height=$3&image=$4 [L,NC,QSA]

# no php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

Так, например, еслиЯ захожу на

www.example.com / ruid.php / t1 / r400x500 / 313ef70

, это должно указывать на

www.example.com / ruid.php? type = 1 & width = 400 & height = 500 & image = 313ef70

Однако, когда я var_dump данные $_GET в ruid.php, я получаю пустой массив:

// returns array(0){}
die(var_dump($_GET));

Пройдя немного поиска, пытаясь найти подходящие флаги и синтаксис для перезаписи htaccess, я не нашел ничего, что решило бы мою проблему.

Спасибо за помощь.

1 Ответ

1 голос
/ 21 мая 2019

Вы можете использовать это правило с измененным регулярным выражением:

Options +FollowSymLinks -Indexes -MultiViews
RewriteEngine On
RewriteBase /

# only allow rewriting to paths that dont exist
RewriteRule ^ruid\.php(?:/t(\d))?/r(\d{2,4})x(\d{2,4})?/([\w-]+)/?$ ruid.php?type=$1&width=$2&height=$3&image=$4 [L,NC,QSA]

# no php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

Обновленная демоверсия регулярных выражений

  • Используйте квантификатор + для последнего параметра
  • Используйте \w вместо [a-zA-Z0-9_]
  • Не нужно убегать / в mod_rewrite правилах
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...