Htaccess制作“漂亮”的网址

时间:2013-12-05 17:59:04

标签: php .htaccess

我正在尝试创建漂亮的网址,但它似乎没有做任何事情。这是我的第一次尝试,我正在尝试根据指南这样做,所以我认为我错过了一些东西或者它并不那么简单。也许有人可以帮忙?有什么建议?我尝试使用生成器执行此操作,但它们都没有生成可行的代码。

供您参考,这是当前的网址格式: 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]

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

对于这个漂亮的网址:domain.com/articles/page/1/

你的正则表达式似乎是错误的。试试这个:

RewriteEngine on
RewriteBase /

RewriteRule ^articles/[^/]+/([0-9]+)/?$  articles.php?page=$1 [NC,L]

答案 1 :(得分:2)

前段时间我写了下面的那篇,专业人士是:

  • 您存储控制器和操作,例如在zend
  • 您可以拥有任意数量的参数
  • 您可以在文件夹/ p​​ublic /
  • 中存储css,js和图像
.httacess中的

代码

RewriteEngine On
RewriteBase /
RewriteRule ^/?public/.+$ - [L]

RewriteRule ^([a-z]+)/([a-z]+)/(.*)$ index.php?controller=$1&action=$2&params=$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获得参数