Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess重定向问题_.htaccess_Redirect - Fatal编程技术网

.htaccess htaccess重定向问题

.htaccess htaccess重定向问题,.htaccess,redirect,.htaccess,Redirect,我似乎有一些问题与我的htaccess代码,我不知道为什么它不工作,承认我不是专家,所以任何帮助将不胜感激 我试图实现的是: www.example.com/job search.html?jobid=12345 需要重定向到: www.example.com/jobs/12345 到目前为止,我在htaccess中找到的代码是: RewriteEngine ON RewriteRule ^/job-search.html\?jobid=(.+) /jobs/$1 [R=301,L] 然而,这

我似乎有一些问题与我的htaccess代码,我不知道为什么它不工作,承认我不是专家,所以任何帮助将不胜感激

我试图实现的是:

www.example.com/job search.html?jobid=12345

需要重定向到:

www.example.com/jobs/12345

到目前为止,我在htaccess中找到的代码是:

RewriteEngine ON
RewriteRule ^/job-search.html\?jobid=(.+) /jobs/$1 [R=301,L]
然而,这对我不起作用,我也不知道为什么,有人能帮我吗?

有几个问题

  • 如果您使用的是Apache2.0或更高版本,则URI的前缀(前导斜杠)将在通过重写引擎之前删除。因此正则表达式中的
    ^/
    永远不会匹配。您需要删除前导斜杠
  • RewriteRule
    中,无法与查询字符串(jobid=12345位)匹配,必须使用
    RewriteCond
    并与
    %{query\u string}
    变量匹配,并使用%反向引用
  • 所以你想要的东西大致如下:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} jobid=([^\&]+)
    RewriteRule ^job-search\.html$ /jobs/%1 [R=301,L]
    

    当你尝试访问,例如www.example.com/job search.html时会发生什么?jobid=12345没有,没有重定向它只是给我一个错误404,因为页面不存在只是好奇为什么你想从“丑陋”版本重定向到“漂亮”版本。你确定$WEBROOT/jobs/12345文件存在吗?是的,确实存在,我之所以从丑陋的版本改为漂亮的版本,基本上是因为这是一个错误。我们有一个第三方提供商,假设我们的URL像“job search.html?jobid=12345”,所以当他们发布脚本时,他们没有与我们核实。因此,已经有一些电子邮件发送了错误的链接,所以我希望“纠正”错误的链接,并将它们重定向到正确的URL。非常感谢你的帮助。干杯