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
Apache 如果存在特定参数,请重写URL_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Apache 如果存在特定参数,请重写URL

Apache 如果存在特定参数,请重写URL,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我有这样一个url:website.co.uk/search.php?a=category&b=test&c=test 我只想将search.php重写为/search/和变量“a”(如果存在) 这样url就会重定向到:website.co.uk/search/category/?b=test&c=test 如果url是:website.co.uk/search.php?b=test&c=test 然后应该重定向到website.co.uk/search/?b=test&c=test 目前我正在

我有这样一个url:
website.co.uk/search.php?a=category&b=test&c=test

我只想将search.php重写为/search/和变量“a”(如果存在)

这样url就会重定向到:
website.co.uk/search/category/?b=test&c=test

如果url是:
website.co.uk/search.php?b=test&c=test


然后应该重定向到
website.co.uk/search/?b=test&c=test

目前我正在使用:

RewriteEngine on
RewriteBase /    

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/(.*?)/?$ search.php?a=$1 [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /search\.php\?a=([^\&\ ]+)
RewriteRule ^/?search\.php$ /search/%1? [L,R=301]
如果我输入url
website.co.uk/search.php?a=category&b=test&c=test

它重定向到
website.co.uk/search/category

如何将其余参数添加到此URL的末尾


因此它看起来像
website.co.uk/search/category/?b=test&c=test

您可以在站点根目录中使用这些规则。htaccess:

Options -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} /search\.php\?a=([^&\s]*)\sHTTP [NC]
RewriteRule ^ /search/%1/? [L,NE,R=301]

RewriteCond %{THE_REQUEST} /search\.php(?:\?a=([^&\s]*)&(\S+))?\sHTTP [NC]
RewriteRule ^ /search/%1/?%2 [L,NE,R=301]

RewriteCond %{THE_REQUEST} /search\.php(?:\?(\S+))?\sHTTP [NC]
RewriteRule ^ /search/?%1 [L,NE,R=301]

RewriteRule ^search/?$ search.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/([\w-]+)/?$ search.php?a=$1 [L,NC,QSA]

您可以在站点根目录中使用这些规则。htaccess:

Options -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} /search\.php\?a=([^&\s]*)\sHTTP [NC]
RewriteRule ^ /search/%1/? [L,NE,R=301]

RewriteCond %{THE_REQUEST} /search\.php(?:\?a=([^&\s]*)&(\S+))?\sHTTP [NC]
RewriteRule ^ /search/%1/?%2 [L,NE,R=301]

RewriteCond %{THE_REQUEST} /search\.php(?:\?(\S+))?\sHTTP [NC]
RewriteRule ^ /search/?%1 [L,NE,R=301]

RewriteRule ^search/?$ search.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/([\w-]+)/?$ search.php?a=$1 [L,NC,QSA]

谢谢,但是由于某些原因,URL没有重定向。。。此外,您是否能够更新多个参数的答案,例如
website.co.uk/search.php?a=category&b=test1&b=test2&c=test3&c=test4&c=test5
其中
b
c
可以添加尽可能多的次数
a
的URL重定向良好,没有
a
参数的url正在重定向到正确的url,但显示错误404未找到对象!page
website.co.uk/search/?b=test
您以前的答案和当前的答案都很好,最后一个问题是-如果url有
a
而没有任何其他参数,它应该重定向到
website.co.uk/search/category
,但当前它重定向到
website.co.uk/search/?a=category
谢谢,但由于某些原因,URL没有重定向。。。此外,您是否能够更新多个参数的答案,例如
website.co.uk/search.php?a=category&b=test1&b=test2&c=test3&c=test4&c=test5
其中
b
c
可以添加尽可能多的次数
a
的URL重定向良好,没有
a
参数的url正在重定向到正确的url,但显示错误404未找到对象!page
website.co.uk/search/?b=test
您以前的答案和当前的答案都很好,最后一个问题是-如果url有
a
而没有任何其他参数,它应该重定向到
website.co.uk/search/category
,但当前它重定向到
website.co.uk/search/?a=category