htaccess для изменения index.php?ms= пользователь / пользователь
Я хочу перенаправить URL моего сайта с кодом 301
http://www.domain.com/index.php?ms=user&ms_1=name --> http://www.domain.com/user/name
http://www.domain.com/index.php?ms=2652&ms_1=title --> http://www.domain.com/2652/title
http://www.domain.com/index.php?ms=questions --> http://www.domain.com/questions
http://www.domain.com/index.php?ms=aaa&ms_1=bbb&ms_2=ccc --> http://www.domain.com/aaa/bbb/ccc
вещи после ms
может содержать пробел и utf8 символов
Как мне это сделать?
3 ответа
Решение
Это должно работать
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /index\.php\?ms=(.*)&ms_1=(.*)&ms_2=(.*)\ HTTP
RewriteRule ^ /%2/%3/%4\? [R=301,L]
RewriteRule ^(.*)/(.*)/(.*)$ /index.php?ms=$1&ms_1=$2&ms_2=$3 [L]
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /index\.php\?ms=(.*)&ms_1=(.*)\ HTTP
RewriteRule ^ /%2/%3\? [R=301,L]
RewriteRule ^(.*)/(.*)$ /index.php?ms=$1&ms_1=$2 [L]
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /index\.php\?ms=(.*)\ HTTP
RewriteRule ^ /%2\? [R=301,L]
RewriteRule ^(.*)/$ /index.php?ms=$1 [L]
Это изменится http://www.domain.com/index.php?ms=aaa&ms_1=bbb&ms_2=ccc
в http://www.domain.com/aaa/bbb/ccc
, но все, что вы видите содержание http://www.domain.com/index.php?ms=aaa&ms_1=bbb&ms_2=ccc
и т.д. для двух других ссылок у вас есть.
Я считаю, что вы можете включить модуль перезаписи Apache и дать правила перезаписи, чтобы сделать это. Имеет регулярное выражение с возможностью обратной ссылки. Возможный (потому что я не очень хорошо знаком с regex в модуле перезаписи) может быть:
ReWriteRule ^/index.php?ms=(.+) /$1
ReWriteRule ^/index.php?ms=(.+)&ms_1=(.+) /$1/$2
ReWriteRule ^/index.php?ms=(.+)&ms_1=(.+)&ms_2=(.+) /$1/$2/$3
Пожалуйста, следуйте коду, я надеюсь, это поможет вам.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?ms=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?ms=$1&ms_1=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?ms=$1&ms_1=$2&ms_2=$3 [L]
перед этим кодом модуль перезаписи apache включен