2011-02-10 3 views
0

В других местах я работал, я был в состоянии легко создавать дружественные поисковую систему URL-адреса, используя следующий в .htaccess:mod_rewrite, доступ только одну части URL для записи блог

<files entry> 
ForceType application/x-httpd-php5 
</files> 

Я m работает на сайте, размещенном компанией, которая запускает PHP как быстрый CGI, и это не работает. Я пытаюсь достичь следующего URL-адреса: http://somewhere.com/blog/entry/12/this-is-the-title

Я просто ищу идентификатор (12 в примере) и не обязательно нуждаюсь в названии (моя логика заключается в том, что название может быть изменено клиентом, ссылки могут быть нарушены). Я пробовал следующий mod_rewrite, но он не работает, если добавить название:

RewriteEngine on 
    RewriteRule ^entry/([^/\.]+)/?$ index.php?id=$1 [L] 

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

ответ

1

Если файл .htaccess фактически размещен как /blog/.htaccess, вам понадобится строка RewriteBase /blog/.

Просто поиск номеров также поможет ограничить возвращаемый идентификатор.

RewriteRule ^blog/entry/([01-9]+)/?$ index.php?id=$1 [L] 

Это также уменьшает часть '/? $' Регулярного выражения. «$» В конце привязывает соответствие к концу строки - вам просто нужны цифры и может игнорировать все, что не является цифрой.

+0

.htaccess находится в каталоге блога, поэтому он становится «RewriteRule^entry/([01-9] +) /? $ Index.php? Id = $ 1 [L]' Это работает, пока я не попытаюсь добавить заголовок , например http://somewhere.com/blog/entry/23 работает, http://somewhere.com/blog/entry/23/the-title результаты в 404 – NightMICU

+1

отбрасывают часть '/? $' регулярного выражения тогда. '$' привязывает совпадение к концу строки - вам просто нужны цифры и может игнорировать все, что не является цифрой. –

+0

вы также можете проголосовать, а также принять ответ .... :-) –