правило перезаписи для индекса вложенной папки

#regex #apache #.htaccess #security #mod-rewrite

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

Вопрос:

у меня есть этот URL

 http://myurl.com/shiftturn/index.php?m=value
  

и я хочу:

 http://myurl.com/shiftturn/value
  

это мой .htaccess

 RewriteEngine On
RewriteRule /shiftturn/([^/]*)$ /index.php?m=$1 [L]
  

но не работает.
как я могу получить нужный мне URL-адрес с правильным выражением htaccess?

Ответ №1:

Поместите это правило в /shiftturn/.htaccess :

 RewriteEngine On
RewriteBase /shiftturn/

RewriteCond %{THE_REQUEST} /index.php?m=([^samp;] ) [NC]
RewriteRule ^ %1? [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/] )/?$ index.php?m=$1 [L,QSA]
  

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

1. Какой исходный URL-адрес вы видите?

2. Спасибо @ zx81, ваши ответы на регулярные выражения уже говорят мне, что вы тоже хорошо справляетесь с этими перезаписями

3. Спасибо, анубхава… Но в ваших ответах на перезапись гораздо больше , чем в регулярном выражении! Вы свободно владеете синтаксисом Apache. Также у меня нет хорошего способа проверить перезаписи. Например, мне не хочется загружать файлы на веб-сервер. Я видел пару онлайн-тестеров перезаписи, но на самом деле не решился. Это две причины, по которым я сейчас не могу ответить на вопросы о перезаписи.

4. На самом деле все эти онлайн-тестеры довольно бесполезны. Мне просто нужен был простой ванильный сервер Apache, работающий на моем ноутбуке, чтобы протестировать эти правила.