用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