我可以在这里使用一些帮助。我正在使用它来修复我的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);
}
}
有什么想法吗?
/托拜厄斯
答案 0 :(得分:5)
如果您通过Apache提供服务,则需要查看mod_rewrite
。
使用mod_rewrite
,您可以修改URL映射到应用程序实际端点的方式。对于你的例子,你会想要这样的东西:
RewriteEngine on
RewriteRule ^/?page/(.*)$ page.php/$1 [L]
This page还有其他一些简单的例子。
答案 1 :(得分:3)
您可能已将您的网络服务器配置为让php处理所有具有.php扩展名的文件的请求。我们假设它是一个apache。然后有类似
的东西AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt
或
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
在其中一个配置文件中。第二个告诉apache所有匹配掩码.php $的文件应该由注册类型application / x-httpd-php(php)的模块/处理程序处理。
但您不必将其限制为.php文件。您可以使用任何所需的文件掩码。或者另一个指令,例如<Directory>。
如果特定目录(可能是其子目录)中的所有文件都是php脚本,您甚至可以将.htaccess文件放在该目录中
ForceType application/x-httpd-php
并且apache会将任何文件视为php脚本。 ForceType会覆盖以前的任何处理程序设置。
答案 2 :(得分:2)
在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文件中包含in / say_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
玩得开心。
答案 3 :(得分:0)
谢谢你的所有答案,但如果我使用mod_rewrite,那么每当我创建一个新页面时,我就会制定新的规则(和很多)。其中有很多:)
也许如果我使用.htaccess将所有网址重定向到我的index.php,然后在那里修复我的网址,例如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