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]