Невозможно переписать URL, используя Apache mod_rewrite в .htaccess - PullRequest
1 голос
/ 28 января 2020

На главной странице моего веб-сайта у меня есть руководство, содержащее несколько ссылок, каждая из которых перенаправляет на страницу семейного гида, все с перенаправлением путем идентификации каждого элемента руководства, оставаясь в виде ссылки

https://example.com/family-guide/?id=4

Где '4' - идентификатор элемента.

Я хотел бы оставить это так:

https://example.com/family-guide/4

Я пытался использовать mod_rewrite в файле .htaccess :

RewriteRule ^family-guide/([0-9] +)/([0-9a-zA-Z_-]+) family-guide/?Id=$1name=$2 [NC, L]

но ничего не происходит

1 Ответ

1 голос
/ 29 января 2020

В вашем правиле есть пробелы. Будьте осторожны, потому что если между флагами [NC, L] есть пробел, правило недействительно.

Другое дело, что вы хотите, чтобы URL https://example.com/family-guide/4 соответствовал правилу, а ваше правило ожидает два параметра (id и имя), хотя в этом URL есть только одно.

Я бы использовал вместо этого пару правил:

RewriteRule family-guide/([0-9]+)/([0-9a-zA-Z_-]+) family-guide/?id=$1&name=$2 [NC,L]
RewriteRule family-guide/([0-9]+) family-guide/?id=$1 [NC,L]

С этими правилами, если вы go до https://example.com/family-guide/4, вы должны быть показано содержание https://example.com/family-guide/?id=4. И если вы go до https://example.com/family-guide/4/whatever, то вместо этого вам покажется содержание https://example.com/family-guide/?id=4&name=whatever, что, как я понял, вам нужно.

Кроме того, порядок правил важен, как если бы они были в противоположном порядок https://example.com/family-guide/4/whatever будет соответствовать другому правилу и покажет содержание https://example.com/family-guide/?id=4/whatever

...