用PHP删除.php扩展名

我可以在这里使用一些帮助。 我正在使用这个来修复我的url,但我不知道如何删除.php扩展名。 该URL现在看起来像这样: http : //mydomain.com/page.php/foo/123/bar/456

function decode_URL_parameters() { $path = @$_SERVER['PATH_INFO']; $url_array=explode('/',$path); array_shift($url_array); while ($url_array) { $_GET[$url_array[0]] = $url_array[1]; array_shift($url_array); array_shift($url_array); } } 

有任何想法吗?

/托比亚斯

如果你通过Apache服务,你会想看看mod_rewrite

使用mod_rewrite ,可以修改URL如何映射到应用程序的实际端点。 对于你的例子,你会想这样的事情:

 RewriteEngine on RewriteRule ^/?page/(.*)$ page.php/$1 [L] 

这个页面还有一些简单的例子。

你可能configuration了你的web服务器让PHP处理所有的.php扩展名的文件请求。 我们假设这是一个Apache。 然后就是这样的

 AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt 

要么

 <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> 

在其中一个configuration文件中。 第二个告诉apache所有匹配掩码.php $的文件都应该由注册typesapplication / x-httpd-php(php)的模块/处理程序来处理。
但是,您不必将其限制为.php文件。 你可以使用任何你想要的文件掩码。 或另一个指令,如<Directory> 。
如果一个特定的目录(也可能是它的子目录)中的所有文件都是php脚本,你甚至可以把一个.htaccess文件放在那个目录中

 ForceType application/x-httpd-php 

和Apache将把任何文件作为PHP脚本。 ForceType覆盖任何以前的处理程序设置。

在Apache下,将.htaccess文件放在包含page.php文件的目录中。

如果page.php文件包含在根目录(即/page.php)中,那么只需将其添加到.htaccess中:

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /page.php?/$1 [L] 

但是,如果page.php文件包含可以说/a_folder/another_folder/page.php

那么你需要把它放到你的.htaccess中:

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /a_folder/another_folder/page.php?/$1 [L] 

等等。

这是什么,它只是从URL中删除page.php。 所以在你的情况下:

而不是: http ://mydomain.com/page.php/foo/123/bar/456您可以使用:htp://mydomain.com/foo/123/bar/456

玩的开心。

谢谢你所有的答案,但如果我使用mod_rewrite然后我开始制定新的规则(和许多),每次我创build一个新的页面。 而且有很多:)

也许如果我使用.htaccess将所有的urlredirect到index.php,然后修正我的URL,就像wordpress一样:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress