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

时间:2014-05-17 10:22:30

标签: php html apache .htaccess mod-rewrite

您好我有一个名为finittra.com的网站,所有菜单都与该页面动态关联。我试图让网站像CMS一样。如果我点击“关于”菜单,则网址会显示http://www.finittra.com/?page=about&如果我点击联系页面,网址会显示网站url /?page=contact,但我希望我想在finittra.com/finittra/中显示所有内容,就像文件夹或规范链接类型一样,这是搜索引擎优化网址友好。请有人帮助我吗?

3 个答案:

答案 0 :(得分:1)

您可能想要使用.htaccess重写您的网址。您可以使用此mod-rewrite生成器:http://www.generateit.net/mod-rewrite

示例:

RewriteEngine On
RewriteRule ^([^/]*)$ /?page=$1 [L]

但是适当的&有组织的方式是使用路由器,尝试Aura.Router

使用示例:

$routes = [
    [
        "name"    => "My_route",
        "pattern" => "/{page}",
    ],
    [
        "name"    => "Another_route",
        "pattern" => "/pages/{page}",
    ]
];

这是您的路由数组,路由器将遍历所有路由并检查给定的请求网址是否与其中任何路由匹配。

$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'];
}

回显页面参数的网址:http://www.finittra.com/about

您需要执行与POST请求相同的操作,但是您需要手动将它们添加到url路径。至少如何做到这一点。

答案 1 :(得分:0)

我会尝试像

这样的东西
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]

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

答案 2 :(得分:0)

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

.htaccess:

    Options +FollowSymLinks  
    RewriteEngine On  

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


   RewriteRule ^user/(\d+)*$ ./page.php?id=$1

如果网址请求equl:http://www.finittra.com/user/123

加载:page.php?id = 123