У меня есть веб-сайт, который будет преобразован в новый cms.Причина этого заключается в том, чтобы не потерять входящие ссылки и не получить мертвые страницы в поисковых системах.
На старом веб-сайте URL-адреса имеют следующую структуру:
website.com/4212/write-a-google-review
и в новом:
website.com/blog?write-a-google-review
, хотя у меня есть некоторая гибкость в том, что я могу добавить идентификатор в строку URL, как в любом из:
website.com/blog?4212&write-a-google-review
website.com/blog?4212-write-a-google-review
website.com/blog?4212/write-a-google-review
website.com/blog?write-a-google-review&4212
Я пробовал несколько вариантов переписывания, некоторые из которых простосовпадают с идентификатором, другие совпадают с текстовой строкой, но еще не получили правильную формулу.
RewriteRule ^4212/?$ blog?4212/write-a-google-review [NC,L] ##
RewriteRule ^[4212]?$ blog?4212/write-a-google-review [NC,L] ##
Комментарий добавлен для проверки 1-го ответа (автор Croises).
Какя обнаружил, что это работает, но только если я дал полный URL-адрес с https://www.mywebsite.com/:
RewriteRule write-a-google-review/?$ https://www.mywebsite.com/blog?write-a-google-review [NC,L]
Когда я добавил следующие две строки, это привело к неработающей странице, отсутствию стилей и выводу содержимого публикации:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\d+(?:/.+?)?)/?$ blog?$1 [L]
Так любопытно, что я изменил его, включив полный URL-адрес, как показано ниже, и он работал как решение регулярных выражений для всех записей:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\d+(?:/.+?)?)/?$ http://www.mywebsite.com/blog?$1 [L]