.правило перенаправления параметров htaccess

#php #.htaccess #redirect #hosting

#php #.htaccess #перенаправлять #принимающий

Вопрос:

Я хочу перенаправить домен на » функцию.php’ с помощью .htaccess

Если я хочу перенаправить указанные ниже домены в соответствии с каждым правилом, как мне написать файл .htaccess?

  1. «ex.com» для «ex.com/function.php»
  2. ex.com / {3 символа до «tt»}, {оставшиеся цифры до «num»}

параметр tt всегда содержит 3 символа. параметр num является случайным, он может быть 1 или 2 ~ 8.

 "ex.com/3Ad32" to "ex.com/function.php?tt=3Adamp;num=32" "ex.com/5eX9901" to "ex.com/function.php?tt=5eXamp;num=9901" "ex.com/5Db930" to "ex.com/function.php?tt=5Dbamp;num=930"  

3.Если у домена есть параметр, он перенаправляет его одинаково.

 "ex.com/3Ad32?fo=test" to "ex.com/function.php?tt=3Adamp;num=32amp;fo=test" "ex.com/5eX9901?fo=ops" to "ex.com/function.php?tt=5eXamp;num=9901amp;fo=ops" "ex.com/5Db930fo=thxamp;te=on" to "ex.com/function.php?tt=5Dbamp;num=930amp;fo=thxamp;te=on"  

Я даже не знаю, может ли файл .htaccess вырезать некоторые URL-адреса (например, 3 символа в параметре «tt»).

Все цели заключаются в том, что параметры необходимы в function.php.

 lt;?php $type = $_GET['tt']; $num = $_GET['num']; $fo = $_GET['fo']; if(!empty($fo)){  $fo = "n"; }  ....   

——новый вопрос.

Если у меня есть два домена и только поддомен «ex.com» нужно поработать, должен ли я написать это так? Только основной домен имеет SSL.

 -----current .htaccess lt;IfModule mod_rewrite.cgt; RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] lt;/IfModulegt;   

Для

 lt;IfModule mod_rewrite.cgt; RewriteEngine On RewriteCond %{HTTP_HOST} ^(www.)?main.com$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.)?ex.com$ RewriteRule ^/?([0-9A-Za-z]{3})([0-9] )$ /function.php?tt=$1$num=$2 [QSA, L]  lt;/IfModulegt;  

Ответ №1:

Вы можете использовать это в своем файле .htaccess или в своей конфе Apache:

 RewriteEngine on RewriteRule ^/?([0-9A-Za-z]{3})([0-9] )$ /function.php?tt=$1amp;num=$2 [QSA,L]  

Где:

  • ^/? — Путь к URL-адресу начинается с необязательной косой черты
  • ([0-9A-Za-z]{3}) — Ровно 3 цифры или буквы в круглой скобке, которые станут $1
  • ([0-9] ) — Одна или несколько цифр в круглой скобке, которые станут $2
  • $ — Совпадает с концом пути URL-адреса
  • QSA — «добавить строку запроса», которая сохранит другие параметры, уже существующие в строке запроса
  • L — «последнее», которое предотвращает запуск других правил перезаписи, когда это совпадает

Это правило НЕ будет перенаправлять и изменять URL-адрес. Если вы предпочитаете, чтобы пользователи перенаправлялись, вы бы добавили R=301 в разделенный запятыми список флагов, т. Е. [QSA,L,R=301]

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

1. Большое вам спасибо за ваш ответ! :gt; ссылаясь на ваш ответ, я написал пользовательский код .htaccess и снова отредактировал вопрос. Это сработает?

2. Если вы смешиваете это с другими правилами перезаписи, вам понадобится только одно RewriteEngine on . Это правило несовместимо с . /index.php правилом для вашего фронтального контроллера, поэтому это правило должно предшествовать ему.