我正在使用.htaccess
重定向我网站上的网址,以避免使用例如page1.php之类的链接。
我在根域上有一个子文件夹engine/index.php
,我打算用它来处理重定向的网址。
例如,我希望链接localhost/user
重写为localhost/engine/index.php?view=user
注意:正在使用的链接,即/ user不是域中存在的文件或文件夹
答案 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
标志表示这是最后一个RewriteRule
,QSA
标志将旧查询字符串附加到新查询字符串。例如: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}}