[英]Apache mod_rewrite explanation
谁能解释这个mod_rewrite正则表达式如何工作?
<IfModule rewrite_module>
RewriteEngine On
RewriteRule ^(.*)$ /Symfony/web/app_dev.php [QSA,L]
</IfModule>
当我输入http://localhost/hello/testingonly
,它将重定向到什么位置?
编辑:
我目前正在尝试使用Symfony Framework并尝试在线教程。 http://localhost/Symfony/web/app_dev.php/hello/testingonly
实际上显示了一个页面,上面写着“ Hello $ name”,在这种情况下,$ name表示“ testingonly”。
因此,如果您访问http://localhost/Symfony/web/app_dev.php/hello/matthew
此页面,则该页面将显示“嗨,马修”。
我想做的下一件事是从URL中删除Symfony / web / app_dev.php,我复制并粘贴了上面的重写规则,它运行良好。
我想知道的是它如何解释哪个是名称参数。
如果我要访问http://localhost/hello/mathew
,并且基于重写规则,则它应该只是http://localhost/Symfony/web/app_dev.php
并且该参数应该丢失。 但是,如何显示“ Hello Mathew”呢?
该规则将所有内容重定向到/Symfony/web/app_dev.php
。
^(.*)$ match everything (start, any char 0~n times, end)
/
RewriteRule ^(.*)$ /Symfony/web/app_dev.php [QSA,L]
/ /
[QSA] keep GET parameters in the URL /
/
[L] mean "if match, does not read next rules"
由于您没有他的[R=301]
标志,因此此重定向是透明的。
因此:
http://localhost/hello/testingonly
重定向到: http://localhost/Symfony/web/app_dev.php
,但URL保持不变。 http://localhost/hello/testingonly?foo=bar
重定向到: http://localhost/Symfony/web/app_dev.php?foo=bar
,但URL保持不变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.