Два правила regex переписывают, чтобы перенаправить 404 URL - PullRequest
0 голосов
/ 18 июля 2011

У меня есть следующие два URL, которые дают мне несколько неприятных ошибок 404, которые я хотел бы исправить, добавив некоторые правила перезаписи в apache, и я должен признать, что я не понимаю регулярных выражений достаточно, чтобы написать правильные правила.

ПЕРВЫЙ URL

http://www.example.com/fincas-rusticas/finca-rustica_en_alacant-alicante/lalacanti/alicante/function.strtotime

Должен перенаправлять на тот же URL без /function.strtotime в конце.

ВТОРОЙ URL, противный.

http://www.example.com/casas/casas_en_malaga/malaga/malaga/
Строгие стандарты : только переменные должны передаваться по ссылке в / var / www / vhosts / eldeposit.com / httpdocs / protected / helpers / Search.php on line 1398
/ casas / casas_en_malaga / малага / малага / venta-vivienda-29-473-24693-0-0

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

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

1) Используйте это правило - оно удалит function.strtotime с конца URL (с помощью 301 Permanent Redirect) независимо от того, насколько глубока эта часть в URL (т.е. она будет работать как для example.com/something/function.strtotime, так и для * 1003). *).

RewriteEngine On
RewriteBase /

RewriteRule ^(.*)function\.strtotime $1 [L,R=301]

2) Это невозможно исправить с помощью .htaccess. Это ошибка в вашем PHP-коде (звучит так, как будто вы передали значение напрямую, а не присваиваете его переменной первой и передаете переменную) и должно быть исправлено в коде PHP.

0 голосов
/ 18 июля 2011

Для первого вы можете сделать

RewriteRule fincas-rusticas/finca-rustica_en_alacant-alicante/lalacanti/alicante/function.strtotime fincas-rusticas/finca-rustica_en_alacant-alicante/lalacanti/alicante/ [L]

Во втором случае я должен предположить, что этот URL-адрес уже переписан, поскольку строгая стандартная ошибка - это ошибка PHP. Это означает, что ваш адрес где-то обрабатывается.

Если URL-адрес должен обрабатываться так, как если бы он был перенаправлен сценарием, я думаю, вы можете обратиться к: Строгие стандарты: только переменные должны передаваться по ссылке

Если URL должен привести к запрещенной ошибке, вы можете сделать

RewriteRule casas/casas_en_malaga/malaga/malaga/ - [F]
...