Jquery window.location.replace, перенаправляет только на базовый URL

Я использую.htaccess (переписывание модов), чтобы иметь привлекательные SEO-адреса. У меня есть форма, где пользователь может изменить пароль своей учетной записи. Я предоставляю пользователю Jquery информацию о том, что его пароль изменился, и через 3 секунды страница будет перенаправлена ​​на страницу входа.

setTimeout(function() {window.location.replace("http://localhost/projects/v4/login/#login");} , 3000);

По какой-то причине этот код перенаправляет на http://localhost/projects/v4/#login вместо http://localhost/projects/v4/login/#login, Я упоминал о SEO-дружественных URL в начале моего вопроса. Я начал думать, что эта проблема возникает, потому что я использую базовый URL между <head></head> элемент.

<base href="http://localhost/projects/v4/" />

Есть ли решение этой проблемы, или я ошибаюсь, и эта проблема возникает из-за совершенно другой проблемы?

.htaccess

<IfModule mod_rewrite.c>

Options +FollowSymlinks
RewriteEngine on

RewriteBase /projects/v4/

RewriteRule ^index/ index.php [L]

# MEMBERS
ReWriteRule ^login/(.*) ?module=login&a=$1 [L]

# MODULES
RewriteRule ^([^/\.]+)$ ?module=$1 [L]

# LAST ONES
#RewriteCond %{THE_REQUEST} \?(ref=.*)?\ HTTP [NC]
#RewriteRule .? http://localhost/projects/v4%{REQUEST_URI}? [R=301,L]

</IfModule>

Спасибо за ваше время и заботу.

1 ответ

Решение

Ваша проблема вызвана не JavaScript, а вашим .htaccess файл. Убедитесь, что ваши правила верны и не противоречат друг другу.

[R=301,L] правило должно быть последним, потому что оно соответствует каждому URL в v4, в том числе логин. Кроме того, своп MODULES а также MEMBERSпотому что правило модуля также соответствует правилу члена.

# MEMBERS
ReWriteRule ^login/(.*)/ ?module=login&a=$1 [L]

# MODULER
RewriteRule ^([^/\.]+)/?$ ?module=$1 [L]
RewriteRule .? http://localhost/projects/v4%{REQUEST_URI}? [R=301,L]
Другие вопросы по тегам