Перезапись ссылки с помощью .htaccess

#.htaccess

#.htaccess

Вопрос:

Я пытаюсь переписать ссылки с помощью файла .htaccess. Базовый материал, но по какой-то причине он не работает. Мне нужно, чтобы имя файла перед .php было последним словом в URL. Чего мне здесь не хватает?

 RewriteRule ^/product/(.*)$ /incl/static/products/$1.php [NC,L]
  

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

1. Ваше регулярное выражение захватывает все до конца URL-адреса, поэтому /product/this/that/something.php?blah=blah будет равно 1 доллару this/that/something.php?blah=blah .

2. Подождите, я сделал это в обратном направлении? Как мне поставить 1 доллар после /product/ ?

3. Вам понадобится что-то вроде RewriteRule ^/product/(.*).php(.*)$ , чтобы записать как имя скрипта ($ 1), так И строку запроса ($ 2) отдельно. В противном случае вы просто превратитесь в /product/test.php /incl/static/products/test.php.php

4. Мне не нужно расширение файла. /incl/static/products/item.php должен стать / продуктом/ товаром

5. Какой URL-адрес вы используете для проверки этого?

Ответ №1:

как Marc уже было сказано, вам нужно что-то, чтобы различать имя файла сценария и другие части:

 RewriteRule ^products/script/(.*)/(.*)$    $1.php?$2amp;%{QUERY_STRING}
  

Но если после first (.*) есть строка запроса, поэтому используйте ее:

 RewriteRule ^products/script/(.*)$    $1.php?%{QUERY_STRING}