使用.htaccess重写重定向URL的规则

时间:2014-07-19 10:38:53

标签: php apache .htaccess mod-rewrite redirect

我正在使用.htaccess重定向我网站上的网址,以避免使用例如page1.php之类的链接。

我在根域上有一个子文件夹engine/index.php,我打算用它来处理重定向的网址。

例如,我希望链接localhost/user重写为localhost/engine/index.php?view=user 注意:正在使用的链接,即/ user不是域中存在的文件或文件夹

1 个答案:

答案 0 :(得分:1)

使用此:

RewriteEngine On

RewriteRule ^([a-z]+)$ engine/index.php?view=$1 [NC,L,QSA]

将此文件直接放在.htaccess目录中的www/文件中 ([a-z]+)将匹配一组字母(自使用NC标志以来也是大写字母),但如果除了字母之外的其他内容localhost/后面,则该网址不会被重写。如果localhost后面只有字母,则网址会重写为engine/index.php?view=$1

L标志表示这是最后一个RewriteRuleQSA标志将旧查询字符串附加到新查询字符串。例如:localhost/user?var=val将重定向到localhost/engine/index.php?view=user&var=val

但是,如果用户转到localhost/user?view=somethingelse,则会将其重写为localhost/engine/index.php?view=user&view=somethingelse,这意味着如果您$_GET['view'] engine.php view它将返回" somethingelse" 。要从查询字符串(user)获取第一个$view = preg_replace('/view=([^&]+).*/', '$1', $_SERVER['QUERY_STRING']); //now, $view contains 'user' 参数,请在PHP中使用此正则表达式:

{{1}}