Я пытаюсь перенаправить ссылки на свой домен. Чего я пытаюсь добиться, так это: когда пользователь нажимает ссылку на
mydomain.com/index.php?dir=myfolder
Я хочу, чтобы он был перенаправлен именно на этот URL-адрес, но панель браузера должна отображать этот URL-адрес:
mydomain.com/myfolder
Поскольку у меня нет доступа к тому, как устанавливаются ссылки (это php-сайт), я пытаюсь сделать это только с файлом .htaccess.
Вот что у меня есть:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} subdomain.mydomain.com
RewriteCond %{REQUEST_URI} (.*)/style.css [OR]
RewriteCond %{REQUEST_URI} (.*)/script.js [OR]
RewriteCond %{REQUEST_URI} (.*)/logo.png
RewriteRule (.*) http://www.subdomain.com%{REQUEST_URI} [R=301,NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?dir=$1 [L]
Поэтому, когда я ввожу "mydomain.com/myfolder"
в браузер, он работает нормально, и URL-адрес в адресной строке остается таким. Но когда я ввожу "mydomain.com/index.php?dir=myfolder"
, он тоже работает, но URL-адрес также остается прежним (а это не то, что мне нужно). Я предполагаю, что мне нужно как-то изменить URL-адрес с .htaccess-файлом, а затем (как я уже сделал) переписать его на php-схему. Я сделал несколько подходов сейчас, но я понятия не имею, как это сделать. Я надеюсь, что вы понимаете мой вопрос и можете мне помочь!
Спасибо!
EDIT:
Решение (спасибо @anubhava):
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?dir=([^\s]+) [NC]
RewriteRule ^ %1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?dir=/$1 [L]