Использование htaccess modrewrite для дружественных URL дает ошибку 404 - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь переписать

http://example.com/category/this-is-my-category

до ...

http://example.com/category.php?id=this-is-my-category

Мой файл .htaccess находится ниже:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteRule ^category/(\d+)/([\w-]+)$ /category.php?id=$1 [L]

Это дает ошибку 404

http://example.com/category.php существует на сервере

Я тоже пробовал

RewriteRule ^category/(\d+)/([\w-]+)$ ./category.php?id=$1 [L]

и

RewriteRule ^/category/([a-zA-Z0-9]+)$ /category.php?id=$1

Я прочитал несколько статей по этому вопросу и не вижу проблемы с кодом в файле .htaccess.

1 Ответ

0 голосов
/ 13 ноября 2018

Правильно, поэтому вашему первому регулярному выражению ...

^category/(\d+)/([\w-]+)$

требуется число от category до последней части, например /category/1234/something-else.

Ваше второе регулярное выражение ...

^/category/([a-zA-Z0-9]+)$

имеет неверный начальный слеш (правила перезаписи начинаются с базы перезаписи) и требует только букв и цифр после category, например /category/thisIsMyCategory.

URL, который вы тестируете, содержит буквы и дефисы.

Мне кажется, вы хотите

RewriteEngine On

RewriteRule ^category/([\w-]+)$ /category.php?id=$1 [L,QSA]

Demo ~ https://htaccess.madewithlove.be? Share = 8c3de5aa-68f3-5ec0-9c69-23ff2dbe2d6e


Некоторые заметки ...

  • Редко когда-либо требуется RewriteBase, особенно если файл .htaccess находится вкорневой каталог, поэтому я удалил его
  • Я добавил флаг QSA, чтобы все параметры запроса были сохранены.Например

    /category/this-is-my-category?foo=bar
    

    становится

    /category.php?id=this-is-my-category&foo=bar
    
...