#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, работающий на моем ноутбуке, чтобы протестировать эти правила.