как создать правило перезаписи в htaccess с помощью .(точка или точка) в параметре url

#apache #.htaccess #mod-rewrite #url-rewriting

#apache #.htaccess #мод-перезапись #url-перезапись

Вопрос:

вот мой пример URL:

http://mydomain.com/folder/subfolder/index.php?site=www.othersite.com

я хочу переписать его таким образом:

http://mydomain.com/folder/subfolder/www.othersite.com

я пытался

 RewriteEngine on

RewriteBase /folder/subfolder/

RewriteRule ^([A-Za-z0-9\-\.] )$ index.php?site=$1 [L]
  

я напечатал массив $_GET и возвращает значение параметра ‘site’ как ‘index.php ‘, оно не вернулось’www.othersite.com ‘

как это можно сделать?

Спасибо,

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

1. Для использования . в регулярном выражении вы можете экранировать его с помощью . но в вашем случае я не понимаю, в чем ваша проблема с точками.

2. RewriteRule ^([A-Za-z0-9-_-] )$ index.php?site=$1 [L] это отлично работает, если значение параметра ‘site’ не имеет . (точка или точка)

3. Извините, я неправильно понял ваше требование и ранее предоставил вам противоположное решение. Пожалуйста, смотрите мой ответ ниже, у вас это должно сработать.

Ответ №1:

Попробуйте это правило в вашем файле .htaccess:

 Options  FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{QUERY_STRING} !^site= [NC]
RewriteRule ^(folder/subfolder)/(.*)$ /$1/index.php?site=$2 [L,NC,QSA]