htaccess для нескольких страниц не работает - PullRequest
0 голосов
/ 21 февраля 2020

Начните с объяснения того, что я пытаюсь сделать: у меня есть разные страницы на моем сайте. Некоторые страницы имеют одинаковые шаблоны, поэтому я создаю одну страницу с параметрами для адаптации своей страницы: параметры называются pageview, и lang URL выглядит следующим образом:

http://mywebsite/home/en <- <a href="http://mywebsite/index.php?pageview=home&lang=en" rel="nofollow noreferrer"> http://mywebsite/index.php?pageview=home&lang=en

http://mywebsite/page2/fr <- <a href="http://mywebsite/index.php?pageview=page2&lang=fr" rel="nofollow noreferrer">http://mywebsite/index.php?pageview=page2&lang=fr

например. Для этого я использую известный файл .htaccess и его модуль rewrite_module для Apache.

У меня также есть страница контактов с другим шаблоном. Это URL выглядит следующим образом, и здесь есть только один параметр:

http://mywebsite/contact/fr <- <a href="http://mywebsite/contact.php?lang=fr" rel="nofollow noreferrer">http://mywebsite/contact.php?lang=fr

http://mywebsite/contact/en <- <a href="http://mywebsite/contact.php?lang=en" rel="nofollow noreferrer">http://mywebsite/contact.php?lang=en

Вот мой код .htaccess:

RewriteEngine On

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

RewriteRule ^([a-zA-Z0-9]+)$ index.php?pageview=$1 [QSA]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?pageview=$1&lang=$2 [QSA]

Проблема в том, что .htaccess файл работает для индекса. php, но не для contact.php

Я могу получить полный доступ к contact.php, но параметр не обнаружен

Спасибо за вашу помощь ?? !

РЕДАКТИРОВАТЬ

Если я удаляю индексные части, чтобы остаться только переписать контакт, то проблема в том, чтобы остаться там.

contact.php и index.php являются в папке root

1 Ответ

1 голос
/ 22 февраля 2020
RewriteRule ^contact/([a-zA-Z0-9]+)/?$ contact.php?lang=$1

Похоже, у вас может быть конфликт с MultiViews. Если MultiViews включен, то mod_negotiation перезапишет запрос для /contact/fr до /contact.php (без каких-либо параметров) до того, как mod_rewrite сможет обработать запрос.

Попробуйте отключить MultiViews вверху вашего .htaccess файла:

Options -MultiViews
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...