использование .htaccess для перенаправления с удобного URL-адреса на фактический файл

У меня есть следующий RewriteRule в моем .htaccess для перенаправления с дружественного URL-адреса на мой основной файл приложения:

RewriteRule ^\/(.*).html$ home/www/page.php?p=$1 [L]

Это должно отправить любой URL-адрес, указывающий на html-страницу, на page.php с URL-адресом в качестве параметра, который будет проанализирован приложением. Это работает для URL вида http://www.example.com/hello.html.

Проблема в том, что я получаю ошибку 404, когда URL-адрес содержит путь к каталогу, например: http://www.example.com/category/hello.html

Ошибка гласит: «Файл не существует: /home/www/category».

Кажется, он сначала ищет путь «категории» вместо обработки .htaccess. Есть идеи, как это решить?


person Orr Siloni    schedule 01.06.2010    source источник


Ответы (1)


Вы пытались удалить начальный \/ из правила перезаписи?

Я только что попробовал следующий файл .htaccess:

RewriteEngine On
RewriteRule ^(.*)\.html$ page.php?p=$1 [L]

С этим в качестве моего page.php:

<?php print_r($_GET); ?>

И когда я перехожу к /category/hello.html, я получаю следующее:

Array ( [p] => category/hello )

Как и ожидалось.

Также обратите внимание, что вам нужно экранировать . перед html, поскольку вы, вероятно, не хотите, чтобы /category/hellozhtml работало.

person Travis Brown    schedule 02.06.2010