#php #.htaccess #redirect #hosting
#php #.htaccess #перенаправлять #принимающий
Вопрос:
Я хочу перенаправить домен на » функцию.php’ с помощью .htaccess
Если я хочу перенаправить указанные ниже домены в соответствии с каждым правилом, как мне написать файл .htaccess?
- «ex.com» для «ex.com/function.php»
- 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
правилом для вашего фронтального контроллера, поэтому это правило должно предшествовать ему.