use*_*742 2 php regex .htaccess symfony
我正在开发一个Symfony2 PHP应用程序.在我的Wamp服务器中,应用程序存储在www/mySite/我的index.php中www/mySite/web/app_dev.php.因为那个,我有像URL一样127.0.0.1/mySite/web/app_dev.php
我想改变路径,所以我只需键入127.0.0.1即可访问我的索引文件.经过一些研究,我发现在www文件夹中写这个.htacces有效:
RewriteEngine on
Rewritecond %{REQUEST_URI} !^/mySite
Rewriterule ^(.*)$ /mySite/web/app_dev.php
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我不明白为什么.有人向我解释一下吗?我真的不明白最后两行,和正则表达式一样^(.*)$
谢谢
这确实是一个简单的正则表达式:
^(.*)$
Run Code Online (Sandbox Code Playgroud)
我们分手吧:
^ - 乞求一根绳子(和)- 捕获组,用于匹配字符串的一部分. - 任何角色.* - 任何次数的任何特征$ - 字符串的结尾所以,把它们放在一起,就意味着:"匹配任意数量的任何字符".后来这个匹配的部分(括号中的部分)被替换为/mySite/web/app_dev.php.
为了更多地解释正则表达式,我们可以想象不同的正则表达式:
^lorem.*$ - 以单词"lorem"开头的字符串,后跟任意数量的任何字符^$ - 一个空字符串^...$ - 包含三个字符的字符串.现在,将它们放在一起--Apache的重写规则通常由两个指令构成:RewriteCond和RewriteRule.后一个指令只会影响符合条件中给出的条件的那些请求RewriteCond.您可以将它们视为"if-then"对:
# the "if" part - if request URI does not match ^/mySite
Rewritecond %{REQUEST_URI} !^/mySite
# the "then" part - then rewrite it to "/mySite/web/app_dev.php"
Rewriterule ^(.*)$ /mySite/web/app_dev.php
Run Code Online (Sandbox Code Playgroud)