Параметр.htaccess mod_rewrite для несуществующего подкаталога
Я хотел бы расширить мои существующие правила перезаписи, чтобы переписать специальный параметр url в несуществующий subdir.
что-то вроде этого:
Реальный URL это:
host.com/post.php?id=17&lang=pl
Моя существующая перезапись:
host.com/somedescriptionstring-p-17.html?lang=pl
Это достигается этим переписыванием:
RewriteRule ^(.*)-p-(.*).html$ post.php?id=$2&%{QUERY_STRING}
Теперь я хочу расширить переписать до:
host.com/pl/somedescriptionstring-p-17.html
Это, я хочу использовать для двух специальных языковых параметров: "pl" и "ru" - параметр по умолчанию должен быть "pl"
Кто-нибудь может мне помочь, пожалуйста?
Спасибо и наилучшими пожеланиями.
1 ответ
Я предполагаю, что у вас будет два типа URL. Один из них имеет форму http://example.com/lang/post1234.html а другой - http://example.com/post1234.html. Второй не имеет языка, и вы хотите установить его по умолчанию на польский. Для этого вам понадобятся два правила. Первый из них внутренне перепишет тот, который содержит код языка, на реальный URL. Другой выдаст внешний редирект, чтобы добавить "pl" в URL.
#This translates the fancy url internally
RewriteRule ^(pl|ru)/.*-p-([0-9]+)\.html$ /post.php?lang=$1&id=$2 [L]
#When there is a language parameter
RewriteCond %{QUERY_STRING} lang=(pl|ru)
RewriteRule ^(.*)-p-([0-9]+)\.html$ /%1/$1-p-$2.html [R,L]
#default case
RewriteRule ^(.*)-p-([0-9]+)\.html$ /pl/$1-p-$2.html [R,L]
+ Изменить R
в R=301
после тестирования он работает правильно.