.htaccess строки запроса php

Это проблема перенаправления страниц в файле .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 разных направлений?

Помимо этих 137 правил, что еще у вас есть в вашем .htaccess?

jeroen 13.03.2018 09:54

Еще 27 конкретных редиректов 301. Все они работают, включая тот, который читает Redirect 301 /holiday-villas.php?sleeps=4 https: // [новый-домен] /rentals/holiday-villas.php?sleeps=4 Это работает! Так что это не похоже на синтаксическую проблему.

Michael Scannell 13.03.2018 11:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно установить 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. Очевидно, что это не решение, но я согласен, что его может и не быть.

Michael Scannell 13.03.2018 10:56

Вы, конечно, должны были повторить это для всех 137 ссылок и, конечно же, поменять аренду на продажу, когда это необходимо. Я думал, ты поймешь это. Я просто хотел показать правильный редирект.

Paul 13.03.2018 19:18

Спасибо, Пол. Тем временем Мохаммед пришел к тому же решению, но с немного другим синтаксисом, и я успешно реализовал его решение. Добавлю, что я не новичок. У меня есть копия Apache Cookbook из прошлого века, и я создаю файлы .htaccess не менее 15 лет. И я пытался избежать смешивания модулей Apache. Я просто не был достаточно умен, чтобы придумать решение, которое придумали вы и Мохаммед. Еще раз спасибо.

Michael Scannell 14.03.2018 11:00
Ответ принят как подходящий

Просто классифицируйте их по 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, уже работает?

Michael Scannell 13.03.2018 12:14

@MichaelScannell, это еще одно правило, которое следует добавить, если вы хотите, потому что предыдущие правила для определенных каталогов, но я мог бы объединить то, что вы хотите перенаправить в аренду, вместе, дайте мне знать все, что вам нужно, чтобы дать полное решение

Mohammed Elhag 13.03.2018 12:18

Я попробовал это правило, и оно работает для первых 5 объектов аренды и первых 5 объектов продажи, которые я ввел. Вы решили мою проблему: молодец! и большое вам спасибо. (Осталось всего 127 страниц недвижимости…)

Michael Scannell 13.03.2018 13:16

рад помочь, спасибо

Mohammed Elhag 13.03.2018 13:17

Другие вопросы по теме