我已经环顾了整个互联网.htaccess指南无济于事,所以我想知道如果在这个网站上的用户之一可以帮助我配置它到我需要做的解释,所以我可以在将来,把它自己整理一下。我该如何配置我的.htaccess这个规范?
什么,我需要做的是
http://www.url.com/view/{id}
实际上是
http://www.url.com/home.php?p=10&id={id}
如果你能帮助我不胜感激。
我已经环顾了整个互联网.htaccess指南无济于事,所以我想知道如果在这个网站上的用户之一可以帮助我配置它到我需要做的解释,所以我可以在将来,把它自己整理一下。我该如何配置我的.htaccess这个规范?
什么,我需要做的是
http://www.url.com/view/{id}
实际上是
http://www.url.com/home.php?p=10&id={id}
如果你能帮助我不胜感激。
您应该部署和配置Mod_Rewrite模块以使用Apache服务器。然后,添加以下行到你的.htaccess
文件:
RewriteEngine on
RewriteBase/
RewriteRule ^view/(.+) /home.php?p=10&id=$1 [L]
谢谢!我不得不删除最初的斜杠,但这是有效的。 '。(。+)'是在'.htaccess'中声明一个变量的方式吗? – Rob
(。+)是一种匹配模式。 ''匹配“任何字符”,“+”表示“1或更多”。在我的回答中,我用'*'表示“0或更多”(我不确定你的问题是否有可能)。在规则的末尾,[L]表示这是最后的重定向规则,因此当URI匹配这条规则时,不再进行重定向处理。 – Nathan
'(。+)'是一个在Regular Expresions中使用的构造,它又被mod_rewrite模块利用。如果你想知道mod_rewrite或使用'.htaccess',你应该首先阅读关于正则表达式的教程。 – sgnsajgon
放置在根web目录将提供您所概述的规范的.htaccess中。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase/
# (optional) do not rewrite if the request points to an actual file or directory on disk
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# rewrite the request
RewriteRule ^view/(.*) /home.php?p=10&id=$1 [L]
</IfModule>
大参考这里: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule
您需要了解的Apache mod_rewrite的模块。 '.htaccess'只是Apache的通用目录访问行为配置文件。 – sgnsajgon