如何在URL中执行没有.php扩展名的PHP网页?

Tuc*_*uco 17 php apache url-rewriting

对不起noob问题,无法理解我应该搜索什么.

我正在制作一个product.php?id=777
我喜欢的网页product/777

谢谢!

arm*_*rma 20

在您的Web根目录中创建.htaccess文件,然后在其中输入:

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^product/([0-9]+)$ product.php?id=$1
Run Code Online (Sandbox Code Playgroud)

  • 未来参考的好评:http://www.widexl.com/tutorials/mod_rewrite.html (3认同)

mar*_*rio 14

您也可以在.htaccess中使用以下内容,而不是使用mod_rewrite:

 DefaultType application/x-httpd-php 
Run Code Online (Sandbox Code Playgroud)

只需product在服务器上命名您的脚本(没有.php文件扩展名).

所以你可以直接调用它,并接收任何附加的字符串作为 $_SERVER["PATH_INFO"]


小智 5

如果您不想使用mod_rewrite(我没有),而其他答案似乎对您不起作用(他们对我而言则不是)。然后,您可以尝试在Apache 2.4+上运行。

更不安全的版本:使任何不带扩展名的文件都可以作为PHP文件运行(如果像我的实现那样,整个服务器只有一个文件,但是如果有人使用,则仍然允许您任意执行,这不是很糟糕。能够将文件写入该目录...然后再说一次,如果他们可以写入文件,则可以为其提供PHP扩展名,因此不确定是否确实扩大了您的访问范围。)

<FilesMatch "^[^.]+$">
    ForceType application/x-httpd-php
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

将其放在目录的.htaccess文件中(假设已启用),或直接将其放在主机定义中。

如果您想使其更具体(也许更安全),则可以使用更具体的内容替换正则表达式:

<FilesMatch "^MySingleFileWithNoExension$">
    ForceType application/x-httpd-php
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

然后只需重新启动Apache,您就可以开始了!