[英]How can I rewrite query parameters to path parameters in Apache?
我目前有一个网站,我试图优化SEO。
我的网站使用以下网址:
domain.com/?app=about
在我的应用中, $_GET[app]
设置为'about',正如预期的那样。
现在,我想这样做,以便将domain.com/about
这样的网址视为domain.com/?app=about
。
我怎么能在Apache .htaccess文件中这样做?
这些被称为RewriteRule
,它们相当简单:
RewriteEngine on
RewriteRule ^about$ /index.php?app=about
至于使它更通用,这是怎么回事:
RewriteEngine on
RewriteRule ^([A-Za-z]+)$ /index.php?app=$1
这会对/ staff或/ contact重定向到index.php这样的任何请求?app = [staff | contact]
在你的.htaccess中使用它
RewriteEngine on
RewriteBase /your-site # only if neccessary
RewriteRule ^([^/])$ index.php?app=$1 [R,L]
编辑
我添加了L标志意味着将此作为最后一条规则,并且R标志本身不会更改URL ..只是在内部重写。 执行R = 301会将浏览器转发到重写的页面,这对调试很有用。
创建获取所请求路径的通用.htaccess可以使用以下行完成:
RewriteRule ^((.+/)+)$ /index.php?path=$1 [L,B]
这将为您提供正确请求转义的路径,因此如果请求的路径是/ hello / world,您将在path参数中获得hello%2Fworld 。 使用PHP函数urldecode()获取原始格式。
仅当网址以“/”结尾时才有效。
注意如果你在同一个文件中有其他重写,你应该把它放在最后,因为它基本上匹配任何东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.