繁体   English   中英

Apache mod_rewrite说明

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM