2015-08-12 2 views
0

Привета Я столкнулся с очень мало проблемами, когда я просматривать сайт без закрывающего слэша он работает нормально, но когда я добавить завершающий слэш в конце концов, он перенаправляет меня на страницу 404Как исправить HTAccess и без завершающего слэша

например

mysite.com/category/slug-name/page/3/

mysite.com/category/slug-name/page/5/

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

mysite.com/category/slug-name/

он дает ошибку, но без трейлинг-косой черты он отлично работает для меня

Аналогично на странице статей, когда я обращаюсь без косой черты, это работает, но когда я добавляю конечную косую черту в конце, она перенаправляет меня на 404 страницу, например. когда я этот URL она отлично работает

mysite.com/123-article-slug-here

, но в данном случае я получил 404 ошибки

mysite.com/123 -Статья-слизня здесь/

Я уверен, что есть проблема в моем HTAccess, но знаю, как это исправить

RewriteEngine On 
RewriteRule ^category/([a-zA-Z0-9-/]+)/page/(.+)/?$ category.php?id=$1&page=$2 [NC,L] 
RewriteRule ^category/([a-zA-Z0-9-/]+)/?$ category.php?id=$1 [L] 
RewriteRule ^([a-zA-Z0-9-/]+)/?$ article.php?url=$1 

ответ

1

Попробуйте либо удалением / от имени пробкового регулярных выражений группировки или сделать этот матч не жадный:

Удалить / из группировки:

RewriteEngine On 
RewriteRule ^category/([a-zA-Z0-9-]+)/page/(.+)/?$ category.php?id=$1&page=$2 [NC,L] 
RewriteRule ^category/([a-zA-Z0-9-]+)/?$ category.php?id=$1 [L] 
RewriteRule ^([a-zA-Z0-9-]+)/?$ article.php?url=$1 

Сделать нежадным:

RewriteEngine On 
RewriteRule ^category/([a-zA-Z0-9-/]+?)/page/(.+)/?$ category.php?id=$1&page=$2 [NC,L] 
RewriteRule ^category/([a-zA-Z0-9-/]+?)/?$ category.php?id=$1 [L] 
RewriteRule ^([a-zA-Z0-9-/]+?)/?$ article.php?url=$1 

Что происходит, так это то, что / получает соответствие внутри группировки (parens), и это передается вашему category.php, и ему не нравится /, поэтому возвращает 404.

+0

Awesome Не жадные работы для меня спасибо, но можете ли вы рассказать мне, в чем разница между удалением/группировкой и не-жадный – Brajman

+0

@Brajman Удаление '/' из группировки означает, что вы ** не можете ** иметь '/' в ваших именах slug, так: '/ category/this/is/my-slug /' won ' т работы. Но если вы сделаете совпадение не жадным, вы все равно можете совместить '/', но он просто не будет соответствовать * дополнительной косой чертой в конце *. –

+0

О, это отличная информация для меня. Действительно очень Спасибо еще раз – Brajman

Смежные вопросы