Маленькая проблема mod_rewrite - PullRequest
2 голосов
/ 07 июня 2010

У меня есть сайт объявлений. Каждая классификация связана так: первоначально

   mydomain.com/ad.php?ad_id=Bmw_M3_M_tech_113620829

Какой RewriteRule я должен использовать, чтобы эта ссылка выглядела:

   mydomain.com/Bmw_M3_M_tech_113620829

Кроме того, что мне нужно добавить в мой файл .htaccess? Это то, что я до сих пор:

Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /

И я только что включил mod_rewrite, который сначала был отключен на моем сервере Ubuntu с помощью:

 a2enmod rewrite

Что-нибудь еще, что мне нужно знать или делать?

Спасибо

Ответы [ 2 ]

3 голосов
/ 07 июня 2010

Похоже, вам нужно что-то вроде этого:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/ad\.php
RewriteRule ^(.*)$ ad.php?ad_id=$1 [L]

Это должно переписать запрос на mydomain.com/Bmw_M3 в mydomain.com/ad.php?ad_id=Bmw_M3.

RewriteCond исключает прямые запросы к ad.php из перезаписи. RewriteRule просто заменит что-либо после mydomain.com/ вместо $1. Флаг [L] (последний) останавливает процесс перезаписи, поэтому он больше не применяется для запроса, который переписывается этим правилом.

0 голосов
/ 07 июня 2010

Вам нужно добавить само правило.Требуется регулярное выражение =)

RewriteRule ([a-zA-Z0-9_]+) ad.php?ad_id=$1

Конечно, это регулярное выражение должно быть точно настроено на основе идентификатора объявления, который вы передаете, - сообщая, какие символы могут быть в этом идентификаторе объявления и т.п.Например, если все идентификаторы объявлений заканчиваются символами подчеркивания и подчеркивания и 9 цифрами, что-то вроде этого:

RewriteRule ([a-zA-Z0-9_]_[0-9]{9}) ad.php?ad_id=$1

Да, также, после включения mod_rewrite перезапустите apache.Убедитесь, что для параметра AllowOverride не установлено значение None, поскольку в этом случае apache будет игнорировать файлы .htaccess в каталогах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...