【发布时间】:2014-01-14 10:49:23
【问题描述】:
谁能解释一下这个 mod_rewrite 正则表达式是如何工作的?
<IfModule rewrite_module>
RewriteEngine On
RewriteRule ^(.*)$ /Symfony/web/app_dev.php [QSA,L]
</IfModule>
当我输入http://localhost/hello/testingonly时,它会被重定向到什么地方?
编辑:
我目前正在尝试使用 Symfony 框架并尝试在线教程。
http://localhost/Symfony/web/app_dev.php/hello/testingonly 实际上显示了一个页面,上面写着“Hello $name”,在这种情况下,$name 指的是“testingonly”。
因此,如果您访问此页面http://localhost/Symfony/web/app_dev.php/hello/matthew,该页面将显示“Hi mathew”。
接下来我想做的是从 URL 中删除 Symfony/web/app_dev.php,然后我复制并粘贴了上面的重写规则,它运行良好。
我想知道的是它如何解释哪个是名称参数。
如果我访问http://localhost/hello/mathew,根据重写规则,它应该只是http://localhost/Symfony/web/app_dev.php,并且参数应该会丢失。但它怎么会显示“Hello mathew”?
【问题讨论】:
-
您能否具体说明一下您不了解的内容? mod_rewrite 相当复杂,允许为不同目的定义各种重写规则和条件。上面的示例使用正则表达式将使用的 apache 上下文 (dir/host...) 中的所有请求重写为
app_dev.php。见mod_rewrite docs。 -
@Matthias,抱歉没有具体说明。我将编辑我的问题
标签: regex apache symfony mod-rewrite