.htaccess用于包含多个变量的友好URL

时间:2012-09-17 00:30:53

标签: php .htaccess mod-rewrite url-rewriting

我正在努力使我的网站更加SEO友好我目前正在使用

RewriteEngine On
RewriteRule (.*)$ index.php?page=$1

site.co.uk/index.php?page=page_name变为site.co.uk/page_name

我也想将它用于子页面。 我试过这个:

RewriteEngine On
RewriteRule (.*)/(.*)$ index.php?page=$1&subpage=$2

但它不起作用,它运行site.co.uk/page_name/sub_page但是当你转到site.co.uk/page_name时,它会返回找不到的404。

我希望它运行site.co.uk/page_name并返回page_name

site.co.uk/page_name/sub_page并返回sub_page

等等

site.co.uk/page_name/sub_page/sub_page2/...

1 个答案:

答案 0 :(得分:7)

只使用:

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

很好,然后您可以在脚本中路由请求。

使用explode()分隔符/拆分页面变量,然后设置变量。

$route = explode('/',$_GET['page']);

$page    = isset($route[0]) ? $route[0] : null;
$subpage = isset($route[1]) ? $route[1] : null;
$yada    = isset($route[2]) ? $route[2] : null;

许多MVC框架都使用此方法。它叫做路由。