Я работаю над сценарием PHP, который использует чистые URI.
Моя проблема в том, что у меня есть одна страница, которая сначала не использует параметр get, затем одна и в конце две.
Линия в .htaccess
В данный момент файл выглядит так:
RewriteRule ^birthing-records/([^/]+)/?$ birthing-records.php?url=$1 [L,QSA,NC]
Но если я добавлю второй параметр следующим образом:
RewriteRule ^birthing-records/([^/]+)/([^/]+)/?$ birthing-records.php?url=$1&second=$2 [L,QSA,NC]
Скрипт перенаправляет меня на страницу ошибки.
Как мне это настроить?
Нужно ли две строки в .htaccess
для этого случая?
Обычно я решаю эту проблему, просто вызывая другую страницу, но я хотел бы сохранить точные URI, которые я использую сейчас, потому что все эти страницы проиндексированы в Google. Я был бы очень признателен за любую помощь.
Вам нужно одно правило для каждого, иначе, когда вы введете один параметр, он будет нарушен.
RewriteRule ^birthing-records/([^/]+)/?$ birthing-records.php?url=$1 [QSA,NC]
RewriteRule ^birthing-records/([^/]+)/([^/]+)/?$ birthing-records.php?url=$1&second=$2 [L,QSA,NC]
Спасибо @Martin за это примечание: что опция L первой из них была удалена, поскольку опция L указывает на последнее правило, которое должно быть запущено (с опцией L может существовать только одно правило)
В противном случае, насколько я могу судить, каждый из них работает нормально по отдельности, но если вы хотите принять 1 или 2 параметра, то вам нужны два правила.
Вы можете проверить htaccess здесь: http://htaccess.mwl.be/
Других решений пока нет …