如果没有

时间:2017-09-03 12:29:11

标签: javascript .htaccess redirect url-redirection

是否可以检查某个网页是否有查询字符串,然后在没有查询字符串的情况下添加一个?

我目前正在使用301重定向,但我想知道是否有更快/更干净的方法?

示例:如果用户转到website.com/referral,则他们会重定向到website.com/referral?code

如果用户转到website.com/referral?code2,则他们不会重定向。

谢谢!

编辑:我不介意它是客户端还是服务器端,但我更喜欢使用最干净的方法并最大限度地影响用户。

编辑2: 尝试使用改写规则后,这是我的htaccess。但是,在访问/推荐时没有任何反应。

RewriteEngine On

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^referral/?$ /referral.php?123

Options -Indexes
ErrorDocument 403 /404.php
ErrorDocument 404 /404.php


# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]


# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]


RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC,L]

2 个答案:

答案 0 :(得分:1)

您可以在服务器端执行此操作,以避免使用mod_rewrite额外加载页面。检查%QUERY_STRING是否为空(将其与^$进行比较),如果是,则重定向到另一页。如果不是,请不要做任何事情:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^referral/?$ /referral.php?code

%{QUERY_STRING} reference

答案 1 :(得分:0)

寡妇位置

如果window.location.search返回空字符串,则没有查询参数。

然后,您可以使用此行window.location.search = "key=value"

设置查询参数

注意

  • 如果您这样做,页面将刷新。
  • 主流浏览器完全支持here
  • 此处给出的答案假定您可以访问窗口对象(即:您是客户端)
  • 这个解决方案也会有点“脏”,因为它会加载页面然后重定向,因为它的客户端(处理这个问题的更好方法是在服务器上)