我尝试使用 RewriteRule 转换文件夹中的 url 参数。任何人都可以帮助我吗?
来源: search.php?term=red&cat=colors 目的地: /search/red/colors
我尝试使用 RewriteRule 转换文件夹中的 url 参数。任何人都可以帮助我吗?
来源: search.php?term=red&cat=colors 目的地: /search/red/colors
此答案的顶部阐明了 URL 如何被重写和重定向。使用“convert”并不是很清楚,因为可能会发生两种完全不同的事情。
要将 URL 更改为/search.php?term=red&cat=colors
更好看的变体,您需要匹配实际请求并重定向浏览器:
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /search\.php\?term=([^&]+)&cat=([^&\ ]+)
RewriteRule ^ /search/%2/%3/? [L,R=301]
这使得当有人在他们的浏览器中键入 URL:http://mysite.com/search.php?term=red&cat=colors
时,他们会被外部重定向到http://mysite.com/search/red/colors
,从而更改地址栏中的 URL。
然后为了在内部重写更好看的 URL 并将其路由回 php 脚本:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?search/([^/]+)/([^/]+)/?$ /search.php?term=$1&cat=$2 [L]
这会反过来,但只是在内部,以便浏览器地址栏中的 URL 在内容从search.php
. 您可以根据您的需要做一个或另一个,或者如果您需要在两个方向上发生,您可以同时做这两个。