在PHP页面中使用.htaccess清除URL

在PHP页面中使用.htaccess清除URL,php,html,apache,.htaccess,mod-rewrite,Php,Html,Apache,.htaccess,Mod Rewrite,您好,我有一个名为finittra.com的网站,所有菜单都与页面动态链接。我试图使该网站像CMS一样。如果我点击about菜单,url会显示&如果我点击联系人页面,url会显示siteurl/?page=contact,但我想显示finittra.com/finittra/中的所有内容,就像搜索引擎优化url友好的文件夹或规范链接类型一样。有人来帮我吗?我想试试这样的 RewriteEngine On RewriteRule ^([a-zA-Z]+)/?$ index.php?page=$1

您好,我有一个名为
finittra.com
的网站,所有菜单都与页面动态链接。我试图使该网站像CMS一样。如果我点击about菜单,url会显示&如果我点击联系人页面,url会显示site
url/?page=contact
,但我想显示
finittra.com/finittra/
中的所有内容,就像搜索引擎优化url友好的文件夹或规范链接类型一样。有人来帮我吗?

我想试试这样的

RewriteEngine On
RewriteRule ^([a-zA-Z]+)/?$ index.php?page=$1 [L,NC,QSA]
这会将每个
finittra.com/xyz/
(将可见)重写为
finittra.com/?page=xyz


如果你想让你的页面有不同的名字,我想你必须手动完成

RewriteEngine On
RewriteRule ^finittra/?$ index.php?page=contact [L,NC,QSA]

此外,您还必须调整网站上的链接

您可能希望使用.htaccess重写URL。您可以使用此mod rewrite生成器:

例如:

RewriteEngine On
RewriteRule ^([^/]*)$ /?page=$1 [L]
但是一个适当的、有组织的方法是使用路由器,试试看

用法示例:

$routes = [
    [
        "name"    => "My_route",
        "pattern" => "/{page}",
    ],
    [
        "name"    => "Another_route",
        "pattern" => "/pages/{page}",
    ]
];
这是您的路由数组,路由器将遍历所有路由,并检查给定的请求url是否与其中任何一个匹配

$factory = new RouterFactory;
$router = $factory->newInstance();

foreach ($routes as $route) {
    $router->add($route['name'], $route['pattern']);
}

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

$match = $router->match($path, $_SERVER);
if ($match) {
    $params = $match->params;
    echo $params['page'];
}
用于回显页面参数的URL:


对于POST请求,您需要执行与get相同的操作,但是您需要手动将它们添加到url路径。至少我是这样做的。

您必须在项目中使用.htaccess文件,如:

.htaccess:

    Options +FollowSymLinks  
    RewriteEngine On  

    RewriteCond %{SCRIPT_FILENAME} !-d  
    RewriteCond %{SCRIPT_FILENAME} !-f  


   RewriteRule ^user/(\d+)*$ ./page.php?id=$1
如果url请求相等:

加载:page.php?id=123