2查询我的网站

时间:2018-04-05 14:22:20

标签: .htaccess mod-rewrite

目前我有一个仅使用1个查询的htaccess。

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

它确实使我的网站看起来像example.com/thispage而不是example.com/index.php?page=thispage,但我想为我的网站添加一个博客功能,从而使网址允许example.com/blog/1而不是{ {1}} - 任何想法?

2 个答案:

答案 0 :(得分:1)

这样做:

RewriteEngine On

# skip existing files and directories from rewrite rules
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# blog page
RewriteRule ^(blog)/([\w-]+)/?$ index.php?page=$1&blogid=$2 [L,NC,QSA]

# remaining pages
RewriteRule ^(.+)$ index.php?page=$1 [L,QSA]

答案 1 :(得分:0)

你可以拆分php里面的路径。在php里面你可以说下面的内容

// Explode the parts by slash
$path = explode('/', $_GET['page']);
// First part found should be the base page, fallback to home
$page = isset($path[0]) ? $path[0] : 'home';
if ($page === 'blog') {
    // On blog, if 2nd part is provided it's a blog item ID
    // Otherwise fallback to null, should show blog overview page
    $blogId = isset($path[1]) ? $path[1] : null;
}

这只是一个基本的例子,这可以做得更先进,更漂亮。 例如,您可以查看laravel routing。

在htaccess中编写多个规则对于其他系统(如nginx)的可维护性和可移植性来说更难。 (根据经验说:p)