Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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 .htaccess用于重写GET URL的规则_Apache_Mod Rewrite - Fatal编程技术网

Apache .htaccess用于重写GET URL的规则

Apache .htaccess用于重写GET URL的规则,apache,mod-rewrite,Apache,Mod Rewrite,在一个网站上,我有一个带有get方法的搜索表单。我想知道我是否可以把那个url重写成一个更好看的 例如,现在在我提交搜索表单后,我会得到如下url: 如果我能让它看起来像这样,那就太好了: 谢谢。您需要执行两个重定向,因为您可能希望后者也能代表前者: Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^/search/(.*)/ /search.php?search_category=0&searc

在一个网站上,我有一个带有get方法的搜索表单。我想知道我是否可以把那个url重写成一个更好看的

例如,现在在我提交搜索表单后,我会得到如下url:

如果我能让它看起来像这样,那就太好了:


谢谢。

您需要执行两个重定向,因为您可能希望后者也能代表前者:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule ^/search/(.*)/ /search.php?search_category=0&search_term=$1&submit_search= [L]
# /search.php?search_term=foo to /search/foo/
RewriteCond %{THE_REQUEST} ^GET\ /search\.php\?([^& ]*&)*search_term=([^& ]*)
RewriteRule ^/search\.php$ /search/%2/ [L,R=301]

# /search/foo/ to /search.php?search_term=foo
RewriteRule ^/search/([^/]+)/$ search.php?search_category=0&search_term=$1&submit_search [L]

您需要执行两个重定向,因为您可能希望后者也被识别为代表前者:

# /search.php?search_term=foo to /search/foo/
RewriteCond %{THE_REQUEST} ^GET\ /search\.php\?([^& ]*&)*search_term=([^& ]*)
RewriteRule ^/search\.php$ /search/%2/ [L,R=301]

# /search/foo/ to /search.php?search_term=foo
RewriteRule ^/search/([^/]+)/$ search.php?search_category=0&search_term=$1&submit_search [L]

好的,但是我应该为表单编写什么动作呢?如果您使用POST,那么url上不会显示任何参数,只有/search.php,您可以将其更改为just/search using.htaccess。如果您使用GET,那么url将在地址栏上可见,您无法更改。好的,但是我应该为表单编写什么操作?如果您使用POST,则url上不会显示任何参数,只有/search.php,您可以将其更改为just/search using.htaccess。如果您使用GET,那么URL将在地址栏上可见,您无法更改。