Очень простая помощь mod_rewrite

У меня есть каталог с именем fb и скрипт внутри с именем like.php. Я бы хотел, чтобы get-id передавался в like-файл с помощью mod_rewrite.

mypage.com/fb/like.php?id=5 будет mypage.com/fb/like/5

Мой (не работает) htaccess выглядит так:

RewriteEngine on  
RewriteRule /fb/like/([0-9]+) /fb/like.php?id=$1  

Кто-нибудь видит, что здесь не так?

1 ответ

Решение

Попробуйте удалить косую черту в начале матча и заменить шаблоны следующим образом:

RewriteRule fb/like/([0-9]+) fb/like.php?id=$1

mypage.com/ это доменное имя, поэтому строка, которая соответствует fb/like/5

Также рассмотрите возможность использования карата в начале строки соответствия, чтобы она соответствовала fb но нет fffb:

 RewriteRule ^fb/like/([0-9]+) fb/like.php?id=$1

Вот краткое руководство по mod_rewrite, которое я нашел полезным.

Отредактируйте свой следующий вопрос:

Чтобы соответствовать mypage.com/something/fb/like/5, вы можете сделать это:

RewriteRule ^([^/]+)/fb/like/([0-9]+) $1/fb/like.php?id=$2

Это сохраняет первый каталог как $1. [^/]+ означает совпадение с одним или несколькими символами, которые не являются косой чертой. Поместите этот файл.htaccess в корневой каталог вашего домена.

В качестве альтернативы вы можете использовать второе-последнее правило и поместить этот файл.htaccess в подкаталог "что-то". Надеюсь, что это имеет смысл.

Или вы можете написать правило для соответствия просто like.php/([0-9]+) так что он будет работать независимо от того, как выглядит путь к каталогу. Вы можете пойти еще более универсально и применить это к любому файлу PHP, а не только like.php, Это действительно зависит от того, как вы хотите, чтобы ваш сайт работал.

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