Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
303 views
in Technique[技术] by (71.8m points)

php - .htaccess for friendly URL with multiple variables

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/...

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...