#apache #.htaccess #mod-rewrite #url-rewriting
#apache #.htaccess #mod-переписать #url-переписывание
Вопрос:
У меня есть эта ссылка https://career.guru99.com/top-50-oops-interview-questions/?format=pdf
Я хочу перенаправить его на https://career.guru99.com/pdf/top-50-oops-interview-questions.pdf
Я создал следующее правило htaccess
RewriteEngine On
RewriteCond %{QUERY_STRING} format=pdf [NC]
RewriteRule ^top-50-oops-interview-questions /pdf/top-50-oops-interview-questions.pdf? [R=301,L]
Но проблема в том, что у меня более 200 ссылок, и мне придется вручную добавлять так много записей в htacess, что также замедляет работу сайта. Есть ли какое-нибудь регулярное выражение, которое может помочь в этом?
Я хочу /?format=pdf
, чтобы меня заменили на .pdf
Ответ №1:
Не могли бы вы попробовать следующее, написанное и протестированное с показанными примерами. Я просматриваю переменную THE_REQUEST
и получаю из нее соответствующее значение формата, а затем при перезаписи помещаю его значение.
RewriteEngine ON
RewriteCond %{THE_REQUEST} s(.*?)/?format=([^s]*)s [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/%2%1.%2 [NE,QSD,L]
Ответ №2:
Я хочу
/?format=pdf
, чтобы меня заменили на
Вы можете попробовать это правило:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^format=(pdf)$ [NC]
RewriteRule ^([w-] )/?$ /%1/$1.%1? [R=301,END,NE]
Комментарии:
1.
RewriteRule ^([w-] )/?$ /%1/$1.%1? [R=301,END,NE]
потому что в конце он запрашивает тип файла.