То, что я прошу, очень просто, и я думаю, что это должно работать, но я не знаю, почему это не так.
По сути, мне нужны эти URL-адреса (1) для перенаправления 301 на эти другие (2)
/es/madrid/
=> (2) /es/madrid-es/
/es/ibiza/
=> (2) /es/ibiza-es/
Это мой подход:
RewriteRule ^/es/madrid/ https://example.com/es/madrid-es/ [R=301,L]
RewriteRule ^/es/ibiza/ https://example.com/es/ibiza-es/ [R=301,L]
RewriteRule ^/es/madrid/ https://example.com/es/madrid-es/ [R=301,L] RewriteRule ^/es/ibiza/ https://example.com/es/ibiza-es/ [R=301,L]
В файлах .htaccess
URL-путь, которому соответствует RewriteRule
шаблон, не начинается с косой черты. Таким образом, приведенные выше директивы никогда не будут соответствовать запрошенному URL-адресу, поэтому ничего не сделают.
Другими словами, сделайте это так:
RewriteRule ^es/madrid/ https://example.com/es/madrid-es/ [R=301,L]
RewriteRule ^es/ibiza/ https://example.com/es/ibiza-es/ [R=301,L]
Обратите внимание, что эти правила перенаправляют /es/madrid/<anything>
- это намерение? В противном случае, чтобы соответствовать точному URL-пути, только затем включите якорь в конце строки. например. ^es/madrid/$
.
Однако вы можете совместить эти два правила. Например:
RewriteRule ^(es)/(madrid|ibiza)/ https://example.com/$1/$2-$1/ [R=301,L]
Где обратные ссылки $1
и $2
соответствуют захваченным группам (заключенным в скобки подшаблонам) в предыдущем RewriteRule
шаблон.
В стороне: И, сделав еще один шаг вперед для любого двухсимвольного кода языка и место, вы можете сделать что-то вроде этого:
RewriteRule ^([a-z]{2})/(\w+)/ https://example.com/$1/$2-$1/ [R=301,L]
Это перенаправит /<lang>/<place>/<anything>
на /<lang>/<place>-<lang>/
, где <lang>
— любой двухсимвольный код языка.
@Eduhud Да, это правило было довольно общим (просто служит примером). Однако вы можете объединить только эти два правила в одно (по крайней мере, в качестве академического упражнения). Я обновил свой ответ.
Еще раз спасибо MrWhite! Правила, которые вы мне дали
RewriteRule ^([a-z]{2})/(\w+)/ https://example.com/$1/$2-$1/ [R=301,L]
, не применимы к моему случаю, так как это происходит только с этими двумя страницами.