перезапись мода .htaccess с переменной

#php #apache #.htaccess #mod-rewrite

#php #apache #.htaccess #переписать мод

Вопрос:

Я пытаюсь сделать простое перенаправление для своего сайта, но мне не удается заставить его работать.

Мой .htaccess:

 Options  FollowSymLinks
IndexIgnore */*
RewriteEngine On

    RewriteBase /
    RewriteCond %{HTTP_HOST} ^(es|fr|pt|de|zh|ru|my|in|ae|bd).my-site.com$
    RewriteRule (.*) - [QSA,E=LANGUAGE:%1]
    RewriteCond %{ENV:LANGUAGE} ^$
    RewriteRule (.*) - [QSA,E=LANGUAGE:en]
    RewriteRule (.*) $1?language=%{ENV:LANGUAGE} [QSA]

RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^profile/(.*)$ http://my-site/decorators/profile/$1
RewriteRule ^(.*)$ index.php
  

Я хочу, чтобы он перенаправлял на http://my-site/decorators/profile/whatever if пользователь просматривает http://my-site/profile/whatever

Ответ №1:

Ваши правила должны быть такими:

 Options  FollowSymLinks
IndexIgnore */*
RewriteEngine On
RewriteBase /

RewriteRule ^(profile/.*)$ /my-site/decorators/$1 [NC,L,R=302]

RewriteCond %{HTTP_HOST} ^(es|fr|pt|de|zh|ru|my|in|ae|bd).my-site.com$
RewriteRule (.*) - [QSA,E=LANGUAGE:%1]

RewriteCond %{ENV:LANGUAGE} ^$
RewriteRule (.*) - [QSA,E=LANGUAGE:en]

RewriteRule (.*) $1?language=%{ENV:LANGUAGE} [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
  

Ответ №2:

Добавьте следующий код htaccess

   RewriteCond ^([profile] )/(.*)$
  RewriteRule ^([decorators] )/([profile] )/(.*)$
  

Удалите следующий код в вашем htaccess

   RewriteRule ^profile/(.*)$ http://my-site/decorators/profile/$1