Я создаю скрипт перенаправления для своего сайта, я использую htaccess для перезаписи URL-адреса, чтобы он выглядел лучше.
например. http://localhost/r/http://google.com
– это URL, но когда я http:/google.com
значение, оно отображается так http:/google.com
.
Один /
отсутствует, как я могу это исправить?
Редактировать:
Правило перезаписи:
RewriteRule ^r/(.*)/$ /system/offsite/redirect/index.php?url=$1 [L]
Спасибо за любую помощь 🙂
Это поведение связано с Apache, который удаляет пустые сегменты пути перед его отображением. Но вы можете получить доступ к исходному запрошенному пути URI через THE_REQUEST :
RewriteCond %{THE_REQUEST} ^GET\ /r/([^\ ]+) RewriteRule ^r/ /system/offsite/redirect/index.php?url=%1 [L]
Использовать функцию php urlencode
РЕДАКТИРОВАТЬ:
//echo your url echo 'http://localhost/r/'. urlencode('http://google.com');
и в вашем файле index.php
//get your url $url = urldecode($GET['url']);
Я думаю, что переменная REQUEST_URI будет иметь правильный текст. Используйте его так:
Options +FollowSymlinks -MultiViews RewriteEngine on RewriteCond %{REQUEST_URI} ^/r/(.*)$ RewriteRule ^r/ /system/offsite/redirect/index.php?url=%1 [L,QSA,NC]