Apache mod_rewrite для изменения расширения файла

#regex #apache #mod-rewrite

#регулярное выражение #apache #мод-перезапись

Вопрос:

Я хочу изменить все запросы на файл с расширением.user.js должно быть изменено на .php. У меня есть этот код:

 <IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule /([^/]*).user.js$ $1.php [R,NC]

</ifModule>
  

К сожалению, это не работает.
Я знаю, что mod_rewrite загружается, потому что, если я сделаю это:

 <IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule /([^/]*).user.js$ $1.php [R,NC]
s
</ifModule>
  

Возвращает код состояния 500. Итак, я полагаю, что моя проблема в регулярном выражении.
Пример того, что я хочу:

 GET /foo/bar/preetyuserscript.user.js
  

становится

 GET /foo/bar/preetyuserscript.php
  

Ответ №1:

Я думаю, это сработает:

 RewriteRule ^(.*?).user.js$ $1.php
  

Если этого не происходит и вы продолжаете видеть 500 ошибок, загляните в журнал ошибок. Всегда проверяйте в первую очередь.

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

1. Это работает, спасибо. Я даже изменил его на это, чтобы ускорить процесс:^(.*) .user.js $ $1.php Я уже пробовал почти такое, но без ». Вероятно, это была ошибка кэша браузера. Я упомянул об ошибке 500 только для того, чтобы я мог доказать, что mod_rewrite доступен

Ответ №2:

Правильный RewriteRule должен быть:

 RewriteRule ^([^.]*).user.js$ /$1.php [R,L,NC]
  

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

1. не работает. Эта перезапись отправляет запрос в корень сервера. Я этого не хочу.

2. Вы уверены, что в моем тестировании этот URI /foo/bar/preetyuserscript.user.js становится /foo/bar/preetyuserscript.php . Есть ли у вас какие-то другие правила в вашем файле .htaccess? Можете ли вы также вставить access. также фрагменты журнала.