2012-01-04 2 views
13

Мне нужно создать URL-адреса, ориентированные на SEO для моего сайта. Я узнал, что могу использовать .htaccess, чтобы переписать их. Так что я попытался это:.htaccess newbie issue using mod_rewrite

> http://www.domain.com/page/1/mypage 
> http://www.domain.com/user/2/myuser 
> http://www.domain.com/help/3/myhelp 

Теперь я застрял с общим правилом, и я не понимаю, Ant для перенаправления трафика на основе имени страницы:

Я использую:

RewriteEngine ON 
RewriteRule ^(.*)$ page.php?page=$1 

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

Как это исправить?

+0

Для хорошего старта, проверить это интерактивный инструмент http://www.webconfs.com/url-rewriting-tool.php, чтобы увидеть, как ваши URL-адрес можно управлять. Он также генерирует код .htaccess. – Arfeen

ответ

17

Вот что вам нужно сделать:

RewriteEngine On 
RewriteBase/
RewriteRule ^([a-z_\-]+)/([0-9]+)/([a-z_\-]+)/?$ page.php?page=$1&id=$2&name=$3 [NC,L] 

NC (или NoCase) делает тест нечувствительны к регистру, А = а;

L (или последний) Последнее правило. Остановите процесс перезаписи здесь и не применяйте больше правил перезаписи;

Вы можете получить более подробную информацию на http://httpd.apache.org/docs/current/mod/mod_rewrite.html

+0

Я вижу разницу, позвольте мне попробовать, почему nc и l? – Marty

+3

'NC' is * no case *, т.е. регистр нечувствителен. 'L' is * last *, что означает, что обработка правил прекратится, если это правило соответствует –

+0

i обновлено мой ответ –