问题
I am working on making my site more SEO friendly I am currently using
RewriteEngine On
RewriteRule (.*)$ index.php?page=$1
To turn site.co.uk/index.php?page=page_name
into site.co.uk/page_name
I want to also use this for sub pages too. I have tried this:
RewriteEngine On
RewriteRule (.*)/(.*)$ index.php?page=$1&subpage=$2
but its not working, it runs site.co.uk/page_name/sub_page
but when you go to site.co.uk/page_name
it returns the 404 not found.
I want it to run site.co.uk/page_name
and it return page_name
or
site.co.uk/page_name/sub_page
and return sub_page
and so on
site.co.uk/page_name/sub_page/sub_page2/...
回答1:
Using just:
RewriteEngine On
Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
is fine then you can route the request within your script.
You split the page variable with explode() delimiter / and then set the variables.
$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;
Many MVC frameworks use this method. Its called routing.
来源:https://stackoverflow.com/questions/12451886/htaccess-for-friendly-url-with-multiple-variables