Я изо всех сил пытаюсь решить проблему перенаправления, но безуспешно.
Я изменил URL своего сайта, применяя язык по умолчанию, прежде чем это было site.com/help/, а теперь это site.com/en/help/
.Благодаря помощи Stack Overflow я сделал перенаправление, но потом столкнулся с новой проблемой со страницами AMP: site.com/amp/help/
теперь перенаправлены на site.com/en/amp/help/
, тогда как они должны быть site.com/amp/en/help/
.
СноваСпасибо за помощь на этом сайте, я изменил структуру URL-адресов на site.com/en/help/amp/
(amp всегда в конце).Чтобы добиться этого, мне пришлось удалить расширение .php, которое было у меня на некоторых страницах, а также было решено удалить косую черту.
Теперь я сталкиваюсь с двумя новыми проблемами: перенаправление 301 на страницу без .phpи URL-адреса с конечными косыми чертами на непоследнюю косую черту не работают.Ниже мой код htaccess.
RewriteEngine on
# amp
RewriteRule ^(.*/)?amp/(.+?)/?$ /$1$2/amp [R=301,NC,L]
## redirect to default language (fr)
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{REQUEST_URI} !/inc
RewriteCond %{REQUEST_URI} !/ajax/
RewriteCond %{REQUEST_URI} !/img/
RewriteRule ^(?![a-z]{2}(?:[/-]|$))(.*)$ /fr/$1 [R=301,L,NE]
## Unless directory, remove trailing slash
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/$ /$1 [R=301,NE,L]
## add trailing slash in front of directories
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule ^[a-z]{2}(?:-[a-z]{2})?/(.+)$ /$1/ [L]
# remove .php
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{REQUEST_FILENAME} !global.js
RewriteCond %{REQUEST_URI} !/ajax/
RewriteCond %{REQUEST_URI} !results.php
RewriteRule ^(.+)\.php(.*)$ /$1$2 [R=301,NC,NE,L]
## amp pages
RewriteRule ^(.*)/amp$ /$1?amp=1 [NC,QSA,L]
## folders of languages
#RewriteRule ^([a-z]{2}(?:-[a-z]{2})?)/(.*)$ /$2?lang=$1 [QSA,L]
RewriteRule ^([a-z]{2}|[a-z]{2}-[a-z]{2})$ /$2?lang=$1 [QSA,L]
RewriteRule ^([a-z]{2}|[a-z]{2}-[a-z]{2})/(.*)$ /$2?lang=$1 [QSA,L]
## hide .php extention
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_FILENAME} !global.js
RewriteRule ^(.+?)/?$ $1.php [L]