如何使PHP GET请求方法像这样;http://somesite.com/games/213123"?

如何使PHP GET请求方法像这样;http://somesite.com/games/213123"?,php,url,indexing,Php,Url,Indexing,嗨,伙计们,我想知道如何向服务器发出这种请求。我看过很多网站,他们都使用这种技术。例如GameTrailes.com=>http://www.gametrailers.com/video/level-six-diablo-iii/**721239**。我知道GET请求是使用如下参数发出的:http://somesite.com/page.php?param=1。那么如何让它像游戏预告片一样。我希望您理解我的问题,我怀疑“721239”是服务器上的一个文件夹,里面有索引页。更方便的方法是这样做。(

嗨,伙计们,我想知道如何向服务器发出这种请求。我看过很多网站,他们都使用这种技术。例如GameTrailes.com=>
http://www.gametrailers.com/video/level-six-diablo-iii/**721239**
。我知道GET请求是使用如下参数发出的:
http://somesite.com/page.php?param=1
。那么如何让它像游戏预告片一样。我希望您理解我的问题,我怀疑“721239”是服务器上的一个文件夹,里面有索引页。

更方便的方法是这样做。()

例如,您可以使用这样的.htaccess,这在symfony中有很好的解释:

<IfModule mod_rewrite.c>
  RewriteEngine On

  # we skip all files with .something
  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

重新启动发动机
#我们跳过了所有的文件
重写条件%{REQUEST_URI}\+$
重写条件%{REQUEST\u URI}!\。html$
重写规则。*-[L]
#我们检查.html版本是否在这里(缓存)
重写规则^$index.html[QSA]
重写规则^([^.]+)$$1.html[QSA]
重写cond%{REQUEST_FILENAME}-F
#不,所以我们重定向到前端web控制器
重写规则^(.*)$index.php[QSA,L]

更方便的方法是这样做。()

例如,您可以使用这样的.htaccess,这在symfony中有很好的解释:

<IfModule mod_rewrite.c>
  RewriteEngine On

  # we skip all files with .something
  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

重新启动发动机
#我们跳过了所有的文件
重写条件%{REQUEST_URI}\+$
重写条件%{REQUEST\u URI}!\。html$
重写规则。*-[L]
#我们检查.html版本是否在这里(缓存)
重写规则^$index.html[QSA]
重写规则^([^.]+)$$1.html[QSA]
重写cond%{REQUEST_FILENAME}-F
#不,所以我们重定向到前端web控制器
重写规则^(.*)$index.php[QSA,L]

您可以使用Apache2中的多视图来实现这一点(http://httpd.apache.org/docs/2.0/content-negotiation.html).

多视图(启用时)指示Apache在资源不存在时构建参数映射,因此对于www.foo.com/app/game/14,如果www.foo.com/app.php存在而app/game和app/game 14不存在,则可以将其设置为将其转换为www.foo.com/app.php?type=game&article=14


有些人也使用mod_rewrite,但我不确定这是首选方法。

您可以在Apache2中使用多视图来实现这一点(http://httpd.apache.org/docs/2.0/content-negotiation.html).

多视图(启用时)指示Apache在资源不存在时构建参数映射,因此对于www.foo.com/app/game/14,如果www.foo.com/app.php存在而app/game和app/game 14不存在,则可以将其设置为将其转换为www.foo.com/app.php?type=game&article=14


有些人也使用mod_rewrite,但我不确定这是首选方法。

您需要在脚本附近的文件夹中创建一个名为的文件。htaccess

在此文件中,您需要定义重写规则。该文件的内容包括:

RewriteEngine on 
RewriteRule ^games/(.*)$ games.php?id=$1 [L]
在这种情况下
将转换为

您需要在脚本附近的文件夹中创建一个名为的文件。htaccess

在此文件中,您需要定义重写规则。该文件的内容包括:

RewriteEngine on 
RewriteRule ^games/(.*)$ games.php?id=$1 [L]
在这种情况下
会转化成

啊,我也想知道!我见过其他语言在默认情况下以这种方式使用它,比如MVC/.NET。这些被称为干净的URL,关于它有成百上千的重复问题。我不明白你的问题。您只需键入不同的URL,无需做任何特殊操作。参数的解析是在服务器上完成的。实际上,更改的不是GET请求,而是后端解析url并将其传递给$\u GET变量中的处理脚本。有关Apache,请参阅
mod_rewrite
。对正则表达式有足够的了解不会有什么坏处。啊,我也想知道!我见过其他语言在默认情况下以这种方式使用它,比如MVC/.NET。这些被称为干净的URL,关于它有成百上千的重复问题。我不明白你的问题。您只需键入不同的URL,无需做任何特殊操作。参数的解析是在服务器上完成的。实际上,更改的不是GET请求,而是后端解析url并将其传递给$\u GET变量中的处理脚本。有关Apache,请参阅
mod_rewrite
。对正则表达式有足够的了解不会有什么坏处。是的,这非常有效只要从“/games.php”=>“games.php”中删除斜杠就可以了。是的,这非常有效只要从“/games.php”=>“games.php”中删除斜杠就可以了。我看到越来越多的人建议修改mod_rewrite,所以我现在就用它,不管怎样,谢谢你。我看到越来越多的人建议重写mod_,所以我现在就同意,谢谢你。