Htaccess переписать правило .aspx в .php - PullRequest
0 голосов
/ 28 апреля 2010

Справочная информация: у меня есть веб-сайт, который был построен с ASP.NET 2.0 и находится на хостинге Windows. Теперь мне нужно переписать свой сайт на PHP и переместить его на хостинг Linux. У меня есть много входящих ссылок на мой сайт со всего Интернета, которые указывают прямо на старые .aspx-страницы. Сам сайт очень простой, одна динамическая страница и пять статических.

Я сохранил статические страницы .aspx как .php-страницы и переписал динамическую страницу на PHP. Динамическая страница называется City.aspx, и я написал ее на PHP, а теперь она называется City.php.

На моем старом хостинге для Windows я использовал сопоставление URL-адресов ASP.NET для удобного URL-адреса. Например, входящий URL-запрос для Laajakaista / Ypaja.aspx был сопоставлен с City.aspx? CityID = 981.

Моя цель: Для перенаправления всех посетителей-людей и поисковых систем, ищущих старые страницы .aspx, на новые страницы .php.

Я думаю, что самый простой способ перенаправить посетителей на новые страницы - это сделать перенаправление, при котором все запросы на файлы .aspx будут перенаправлены в типы файлов .php.

Итак, если кто-то запросит MYSITE / City.aspx? CityID = 5, они будут приняты вместо MYSITE / City.php? CityID = 5.

Однако у меня много проблем с тем, чтобы заставить это работать.

Пока это то, что я нашел:

rewriterule ^([.]+)\.aspx$ http://www.example.com/$1.php [R=301,L] 

Тем не менее, я думаю, что это не может обрабатывать параметры после типа файла, и я также не совсем уверен, что поставить на передний план.

Чтобы сделать все немного сложнее, на моем предыдущем сайте я использовал удобные URL-адреса, чтобы у меня был огромный файл сопоставления с сопоставлениями, подобными этим:

    <add url="~/Laajakaista/Ypaja.aspx" mappedUrl="~/City.aspx?CityID=981" />
    <add url="~/Laajakaista/Aetsa.aspx" mappedUrl="~/City.aspx?CityID=988" />
    <add url="~/Laajakaista/Ahtari.aspx" mappedUrl="~/City.aspx?CityID=989" />
    <add url="~/Laajakaista/Aanekoski.aspx" mappedUrl="~/City.aspx?CityID=992" />

Я попытался сделать простое перенаправление следующим образом:

Redirect 301 Laajakaista/Aanekoski.aspx City.php?CityID=992

но не смог заставить его работать. Я закончил с внутренней ошибкой сервера и 50k .htaccess-файл ...

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

Попробуйте добавить QSA к флагам, чтобы оно было [R=301,L,QSA]. Это означает «Query String Append» и добавит всю строку запроса из старого URL в новый URL. Это должно решить вашу проблему параметров после имени файла.

RewriteRule ^(.*)\.aspx$ http://www.example.com/$1.php [R=301,L,QSA]

Что касается других отображений, вы можете пересмотреть свой метод. Наличие карт для каждого города кажется грязным. Вероятно, вы должны передать название города в качестве параметра в файл city.php и преобразовать его из имени в ID. Тогда это только одна запись RewriteRule в файле .htaccess, а не перенаправление для каждого города. Например,

RewriteRule ^Laajakaista/(.*)\.aspx$ city.php?cityname=$1 [L]
1 голос
/ 28 апреля 2010

Вы действительно хотите сделать перевод названия города / идентификатора в файле htaccess?

Обычный способ - сопоставить Laajakaista/*.aspx и передать название места в качестве параметра сценарию PHP (который затем будет выполнять преобразование в идентификатор). Разве это не было бы лучшей идеей?

Если это вариант, вы бы сделали что-то вроде этого:

rewriterule ^Laajakaista/([.]+)\.aspx$ city.php?cityname=$1 [QSA]
rewriterule ^([.]+)\.aspx$ $1.php?%{QUERY_STRING} [R=301,QSA]

Вы можете сделать это с 301 или без - 301 изменит URL, видимый в браузере.

...