#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. также фрагменты журнала.