Назад | Перейти на главную страницу

htaccess redirects добавляет вопросительный знак к url

В моем htaccess есть следующее:

#When your application folder isn't in the system folder
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?/$1 [L]

#No WWW
RewriteCond %{HTTP_HOST} !^myrealdomain.com$ [NC]
RewriteRule ^(.*)$ https://myrealdomain.com/$1 [L,R=301]

#Always redirect to SSL pages
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Я хочу www быть перенаправленным, и я хочу, чтобы все страницы были https. Вроде работает, но когда пытаюсь зайти https://www.d.com/hello он перенаправляет на https://d.com/?/hello.

Откуда появился этот лишний вопросительный знак?

Кроме того, создание кнопка лайка facebook похоже, мне совсем не нравится мой домен. Кнопка кажется пустой, и я думаю, что это связано с вышеупомянутым ...?

Любая помощь очень ценится.

Обычно это плохо понимаемая часть mod_rewrite. Все правила (если за правилом не следует [L]) обрабатываются по порядку, а правила изменить значение URI. Они не меняют ценность %{THE_REQUEST}.

Отсюда ваше второе правило:

RewriteRule ^(.*)$ ?/$1 [L]

Вызывает запрос на /hello быть переписанным на ?/hello. Вход в следующее правило теперь ?/hello.

Следующее правило:

RewriteRule ^(.*)$ https://myrealdomain.com/$1 [L,R=301]

Использует $1 для соответствия всему URI и отправляет 301 редирект на этот URI в новом домене. Отсюда и вопросительный знак. Это внутренняя перезапись с последующим перенаправлением в том же запросе.

Вы можете решить эту проблему, переместив ^application перезаписать и перезаписать действующий файл до конца после всех правил перенаправления.

Ваше перенаправление https отсутствует [L,R=301].

Я понятия не имею о кнопках типа Facebook, но после устранения проблемы со знаком вопроса, если она все еще не работает, попробуйте спросить еще раз или прочитать документацию Facebook.