Apache 如果存在特定参数,请重写URL
我有这样一个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 目前我正在
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]
如果我输入urlwebsite.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未找到对象!pagewebsite.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未找到对象!pagewebsite.co.uk/search/?b=test
您以前的答案和当前的答案都很好,最后一个问题是-如果url有a
而没有任何其他参数,它应该重定向到website.co.uk/search/category
,但当前它重定向到website.co.uk/search/?a=category