目前我有一个仅使用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}} - 任何想法?
答案 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)