RewriteRule, чтобы указать параметру путь

#php #.htaccess #mod-rewrite

#php #.htaccess #mod-переписать

Вопрос:

извините, если это общий вопрос, мне нужен конкретный ответ :

Я хочу переписать URL, например :

 /foo/foo0.php?img=foo1/foo2/foo3/bar.jpg
  

в это :

 /foo/foo1/foo2/foo3/bar.jpg
  

Комментарии:

1. Какой сервер вы используете? Что вы пробовали?

2. @PPvG RewriteRule ^foo/(.*/.*/.*/.*)$ foo/foo0.php?img=$1 не работает 🙁

Ответ №1:

 RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)$ $1/foo0.php?img=$2/$3/$4/$5 [L]
  

Сделает это

Редактировать

Судя по добавленному вами коду, вы действительно хотите сделать это так:

 RewriteRule ^foo/(.*)/(.*)/(.*)/(.*)$ foo/foo0.php?img=$1/$2/$3/$4 [L]
  

Комментарии:

1. Следует ли? это обычное использование? Это правильно? RewriteRule ^foo/(.*/.*/.*/.*)$ foo/bar0.php?img=$1

2. Извините за плохой выбор слов, я просто имел в виду, что он не был протестирован. Насколько я знаю, это примерно так же часто, как и для правила перезаписи

Ответ №2:

Основываясь на комментариях, я не думаю, что несколько сегментов действительно нужны. Этого должно быть достаточно:

 RewriteRule ^foo/(.*)$ foo/foo0.php?img=$1 [L]
  

Это позволит вам использовать любое количество foo сегментов.

Комментарии:

1. безопасно ли это для моего сервера?

2. Вероятно, не менее безопасно, чем другое решение, учитывая, что они оба разрешают все (допустимые) символы. Конечно, вы все равно должны очистить любой пользовательский ввод.