Это проблема перенаправления страниц в файле .htaccess, когда страницы идентифицируются динамической строкой PHP.
Не уверен, что кто-нибудь может мне с этим помочь. Это может быть неразрешимая проблема.
Я только что переместил клиента на новый веб-сайт, на котором недвижимость для продажи находится в одной подпапке, а недвижимость для аренды - в другой. (На старом сайте все они были в верхней папке.)
Страницы идентифицируются следующим образом:
show-property.php?prop=[number]
Если бы все свойства были помещены в одну и ту же подпапку, одно правило охватило бы все. Но я должен отправить некоторые свойства в подпапку «Аренда», а другие - в подпапку «Продажи», в зависимости от конкретного числа.
Есть 60 объектов для продажи и 77 объектов для аренды.
Поэтому я поместил в файл .htaccess на старом сайте 137 отдельных правил, например эти:
Redirect 301 /show-property.php?prop=100 https://[new-domain]/**rentals**/show-property.php?prop=100
Redirect 301 /show-property.php?prop=101 https://new-domain]/**sales**/show-property.php?prop=101
Неудивительно, что ни один из них не работает.
Можно ли решить эту проблему с помощью 137 отдельных страниц и 2 разных направлений?
Еще 27 конкретных редиректов 301. Все они работают, включая тот, который читает Redirect 301 /holiday-villas.php?sleeps=4 https: // [новый-домен] /rentals/holiday-villas.php?sleeps=4 Это работает! Так что это не похоже на синтаксическую проблему.






Вам нужно установить RewriteCondition:
RewriteCond %{REQUEST_URI} ^/show-property.php
RewriteCond %{QUERY_STRING} prop=100
RewriteRule (.*) https://[new-domain]/rentals/show-property.php?prop=100 [R=301,L]
Если есть способ отличить цель от идентификатора опоры, вы можете упростить его, но я сомневаюсь, что это правда в вашем случае.
Это просто отправит все свойства в подпапку rentals. Очевидно, что это не решение, но я согласен, что его может и не быть.
Вы, конечно, должны были повторить это для всех 137 ссылок и, конечно же, поменять аренду на продажу, когда это необходимо. Я думал, ты поймешь это. Я просто хотел показать правильный редирект.
Спасибо, Пол. Тем временем Мохаммед пришел к тому же решению, но с немного другим синтаксисом, и я успешно реализовал его решение. Добавлю, что я не новичок. У меня есть копия Apache Cookbook из прошлого века, и я создаю файлы .htaccess не менее 15 лет. И я пытался избежать смешивания модулей Apache. Я просто не был достаточно умен, чтобы придумать решение, которое придумали вы и Мохаммед. Еще раз спасибо.
Просто классифицируйте их по query string следующим образом:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^prop\=100$
RewriteRule ^(.*)$ https://new-domain.com/rentals/$1 [R=301,L,QSA]
RewriteCond %{QUERY_STRING} ^prop\=101$
RewriteRule ^(.*)$ https://new-domain.com/sales/$1 [R=301,L,QSA]
1 доллар будет соответствовать URI на старом сайте, а флаг QSA позволит добавить строку запроса в новом месте.
Что ж, я попробую это и дам знать, сработает ли это. Но если это необходимо, почему такое правило, как Redirect 301 /holiday-villas.php?sleeps=4 https: // [new-domain] /rentals/holiday-villas.php?sleeps=4, уже работает?
@MichaelScannell, это еще одно правило, которое следует добавить, если вы хотите, потому что предыдущие правила для определенных каталогов, но я мог бы объединить то, что вы хотите перенаправить в аренду, вместе, дайте мне знать все, что вам нужно, чтобы дать полное решение
Я попробовал это правило, и оно работает для первых 5 объектов аренды и первых 5 объектов продажи, которые я ввел. Вы решили мою проблему: молодец! и большое вам спасибо. (Осталось всего 127 страниц недвижимости…)
рад помочь, спасибо
Помимо этих 137 правил, что еще у вас есть в вашем
.htaccess?