Php .htaccess用于具有多个变量的友好URL
我正在努力使我的网站更加SEO友好,我目前正在使用Php .htaccess用于具有多个变量的友好URL,php,.htaccess,mod-rewrite,url-rewriting,Php,.htaccess,Mod Rewrite,Url Rewriting,我正在努力使我的网站更加SEO友好,我目前正在使用 RewriteEngine On RewriteRule (.*)$ index.php?page=$1 将site.co.uk/index.php?page=page\u name转换为site.co.uk/page\u name 我还想将其用于子页面。 我试过这个: RewriteEngine On RewriteRule (.*)/(.*)$ index.php?page=$1&subpage=$2 但它不工作,它运行site
RewriteEngine On
RewriteRule (.*)$ index.php?page=$1
将site.co.uk/index.php?page=page\u name
转换为site.co.uk/page\u name
我还想将其用于子页面。
我试过这个:
RewriteEngine On
RewriteRule (.*)/(.*)$ index.php?page=$1&subpage=$2
但它不工作,它运行site.co.uk/page\u name/sub\u page
,但当您转到site.co.uk/page\u name
时,它返回404 not found
我希望它运行site.co.uk/page\u name
并返回page\u name
或
site.co.uk/page\u name/sub\u page
并返回sub\u page
等等
site.co.uk/page\u name/sub\u page/sub\u page2/…
只需使用:
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框架都使用这种方法。它被称为路由。+1因为它最简单、最灵活。您甚至可以通过解析请求URI而不传递“页面”。如果你有可浏览的目录,也可以加上“RewriteCond%{REQUEST_FILENAME}!-d”。非常感谢你,我一直在思考这个问题。htaccess是我唯一不确定的事情。谢谢@Lawrence Cheroneim使用
RewriteRule^(.*)$$1.php
隐藏exstention我如何使用RewriteRule^(.*)$index.php?page=$1[L,QSA]
在一个名为portal.php
的页面上使用portal
的重写规则)来做同样的事情,但像(portal/
作为页面)和rule>一样^(.*)$index.php?page=$1[L,QSA]
比如重写规则(.*)$portal/?page=$1[L,QSA]`之类的东西。