如何使用htaccess将动态URL正确重定向到我选择的静态URL


How do I properly redirect a dynamic URL to a static URL of my choice using htaccess?

我有一个问题&答案类型的设置,当访问者想问问题时,他们必须首先登录。登录是动态的;页面位于:

http://discuss.nationalcdp.org/questions/

在那里,"询问"按钮指向:

https://discuss.nationalcdp.org/questions/ask

当未登录的访问者点击此按钮时,他们将被重定向到:

https://discuss.nationalcdp.org/ncdp-login/?redirect_to=https%3A%2F 
%2Fdiscuss.nationalcdp.org%2Fquestions%2Fask

我已经进入了我的cPanel,并配置了重定向(带有和不带有通配符),但都没有用。我试过:

https://discuss.nationalcdp.org/ncdp-login/ redirects to:
https://discuss.nationalcdp.org/login/

最后,我知道这行不通,但无论如何都尝试了一下,我设置了:

https://discuss.nationalcdp.org/ncdp-login/?redirect_to=https%3A%2F 
%2Fdiscuss.nationalcdp.org%2Fquestions%2Fask  redirects to
https://discuss.nationalcdp.org/login/

我应该远离cPanel,用root.htaccess文件处理这个问题吗?

这是cPanel在我的htaccess文件中写入的内容,基本上我正在尝试获得/subdomain/ncdp登录和/subdomain/register/重定向到根域:

RewriteCond %{HTTP_HOST} ^directory'.nationalcdp'.org$ [OR]
RewriteCond %{HTTP_HOST} ^www'.directory'.nationalcdp'.org$
RewriteRule ^ncdp'-login$ "https':'/'/nationalcdp'.org'/profile'/login'/" [R=301,L]
RewriteCond %{HTTP_HOST} ^directory'.nationalcdp'.org$ [OR]
RewriteCond %{HTTP_HOST} ^www'.directory'.nationalcdp'.org$
RewriteRule ^register'/$ "https':'/'/nationalcdp'.org'/profile'/register'/" [R=301,L]
RewriteCond %{HTTP_HOST} ^discuss'.nationalcdp'.org$ [OR]
RewriteCond %{HTTP_HOST} ^www'.discuss'.nationalcdp'.org$
RewriteRule ^register'/$ "https':'/'/nationalcdp'.org'/profile'/register'/" [R=301,L]
RewriteCond %{HTTP_HOST} ^forums'.nationalcdp'.org$ [OR]
RewriteCond %{HTTP_HOST} ^www'.forums'.nationalcdp'.org$
RewriteRule ^ncdp'-login$ "https':'/'/nationalcdp'.org'/profile'/login'/" [R=301,L]
RewriteCond %{HTTP_HOST} ^forums'.nationalcdp'.org$ [OR]
RewriteCond %{HTTP_HOST} ^www'.forums'.nationalcdp'.org$
RewriteRule ^register'/$ "https':'/'/nationalcdp'.org'/profile'/register'/" [R=301,L]
RewriteCond %{HTTP_HOST} ^discuss'.nationalcdp'.org$ [OR]
RewriteCond %{HTTP_HOST} ^www'.discuss'.nationalcdp'.org$
RewriteRule ^ncdp'-login'/?(.*)$ "https':'/'/nationalcdp'.org'/profile'/login'/$1"    
[R=301,L]

关于如何获得此动态生成的登录URL以重定向到的任何指导https://discuss.nationalcdp.org/login/将不胜感激!

您可以将此规则作为第一个规则放置在RewriteEngine On行下方:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^discuss'.nationalcdp'.org$
RewriteRule ^ncdp-login/?$ /profile/login/? [L,NC,R=302]

请注释掉(删除)/ncdp-login的所有其他规则。