我正在尝试创建漂亮的网址,但它似乎没有做任何事情。这是我的第一次尝试,我正在尝试根据指南这样做,所以我认为我错过了一些东西或者它并不那么简单。也许有人可以帮忙?有什么建议?我尝试使用生成器执行此操作,但它们都没有生成可行的代码。
供您参考,这是当前的网址格式: domain.com/articles.php?page=1
我想把它变成这个: domain.com/articles/page/1 /
这就是我在里面写的.htaccess
RewriteEngine on
RewriteBase /
RewriteRule ^articles/([0-9]+)/?$ articles.php?page=$1 [NC,L]
提前感谢您的帮助。
答案 0 :(得分:3)
对于这个漂亮的网址:domain.com/articles/page/1/
:
你的正则表达式似乎是错误的。试试这个:
RewriteEngine on
RewriteBase /
RewriteRule ^articles/[^/]+/([0-9]+)/?$ articles.php?page=$1 [NC,L]
答案 1 :(得分:2)
前段时间我写了下面的那篇,专业人士是:
代码
RewriteEngine On
RewriteBase /
RewriteRule ^/?public/.+$ - [L]
RewriteRule ^([a-z]+)/([a-z]+)/(.*)$ index.php?controller=$1&action=$2¶ms=$3 [L]
RewriteCond %{QUERY_STRING} ^(.*)
RewriteRule ^([a-z]+)/([a-z]+)?(.*)$ index.php?controller=$1&action=$2&%1 [L]
RewriteRule ^([a-z]+)/([a-z]+)$ index.php?controller=$1&action=$2 [L]
RewriteRule ^([a-z]+)$ index.php?controller=$1 [L]
RewriteRule ^ index.php [L]
控制是在你的bootstrap(index.html)中你必须在开头添加:
/*
* Split params from given URL
*/
$_PARAMS = array();
foreach ($_GET as $key => $value) {
$_PARAMS[$key] = $value;
}
if (isset($_GET['params'])) {
$_TEMP = explode( ",", $_GET['params'] );
for ($i = 0; $i+1 < count($_TEMP) ; $i+=2) {
$_PARAMS[$_TEMP[$i]] = $_TEMP[$i+1];
}
}
$controller = "";
$action = "";
/*
* load controller -> layout -> action
*/
$controller = isset($_GET['controller']) ? $_GET['controller'] : "";
$action = isset($_GET['action']) ? $_GET['action'] : "index";
你从$ _PARAMS获得参数