Php 如何配置.htaccess以访问此规范?

Php 如何配置.htaccess以访问此规范?,php,html,apache,.htaccess,Php,Html,Apache,.htaccess,我已经在互联网上查阅了一份全面的.htaccess指南,但毫无用处,因此我想知道这个网站上的一位用户是否可以帮助我配置它,使其符合我需要的内容,并提供解释,以便我将来可以自己整理它 我需要做的是 http://www.url.com/view/{id} 实际 http://www.url.com/home.php?p=10&id={id} 如果您能提供帮助,我将不胜感激。您应该部署并配置Mod_Rewrite模块以与Apache服务器一起工作。然后,将以下行添加到.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]

您应该部署和配置Mod_Rewrite模块以与Apache服务器一起工作。然后,将以下行添加到
.htaccess
文件中:

RewriteEngine on
RewriteBase /

RewriteRule ^view/(.+) /home.php?p=10&id=$1 [L]

将以下内容放入根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>

重新启动发动机
重写基/
#(可选)如果请求指向磁盘上的实际文件或目录,则不要重写
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
#重写请求
重写规则^view/(.*)/home.php?p=10&id=$1[L]
这里有很多参考资料:

将以下内容放在根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>

重新启动发动机
重写基/
#(可选)如果请求指向磁盘上的实际文件或目录,则不要重写
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
#重写请求
重写规则^view/(.*)/home.php?p=10&id=$1[L]
这里有很多参考资料:

您需要了解Apache Mod_重写模块
.htaccess
是Apache的唯一通用目录访问行为配置文件。您需要了解Apache Mod_重写模块
.htaccess
是Apache唯一的通用目录访问行为配置文件。谢谢!我不得不删除最初的斜杠,但这是可行的。是
(.+)
.htaccess
中声明变量的方式吗?(.+)是匹配模式。“”匹配“任意字符”,并且“+”表示“1或更多”。在我的回答中,我使用了“*”表示“0或更多”(我不确定你的问题是否有这种可能性)。在规则的末尾,[L]表示这是最后一个重定向规则,因此当URI与此规则匹配时,没有进一步的重定向处理。
(.+)
是在常规表达式中使用的一种结构,而mod_rewrite模块又利用了这种结构。如果你想知道mod_rewrite或
.htaccess
的用法,你应该首先阅读有关正则表达式的教程。谢谢!我不得不删除最初的斜杠,但这是可行的。是
(.+)
.htaccess
中声明变量的方式吗?(.+)是匹配模式。“”匹配“任意字符”,并且“+”表示“1或更多”。在我的回答中,我使用了“*”表示“0或更多”(我不确定你的问题是否有这种可能性)。在规则的末尾,[L]表示这是最后一个重定向规则,因此当URI与此规则匹配时,没有进一步的重定向处理。
(.+)
是在常规表达式中使用的一种结构,而mod_rewrite模块又利用了这种结构。如果您想知道mod_rewrite或
.htaccess
的用法,您应该首先阅读有关正则表达式的教程。