bob*_*obo 6 apache mod-rewrite
什么是语法区别
RewriteRule help help.php?q=noslash [L] #1
RewriteRule /help help.php?q=withslash [L] #2
Run Code Online (Sandbox Code Playgroud)
如果我点击http:// localhost/help,它会转到#1,如果我点击http:// localhost //帮助它仍然会转到#1.
我是否正确地说在RewriteRule的第一个参数中的主要斜线基本上被忽略了?
另外,为什么这个重写规则不起作用?
RewriteRule help /help.php [L] #1
Run Code Online (Sandbox Code Playgroud)
在第二个arg前面放置一个前导斜杠实际上会为服务器创建一个500错误.为什么?
我应该注意到我正在使用.htaccess文件来编写这些规则
bob*_*obo 13
很奇怪的是,
RewriteRule ^/help help.php?q=2 [L]
Run Code Online (Sandbox Code Playgroud)
上述规则失败,永不匹配.
这条规则:
RewriteRule ^help help.php?q=1 [L]
Run Code Online (Sandbox Code Playgroud)
匹配http:// localhost/help,http:// localhost // help和http:// localhost /// help
似乎RewriteRule 永远不会看到路径的前导斜杠,并且正如TheCoolah说它们已经崩溃(无论如何使用.htaccess文件时为0 ..)无论有多少.
对于问题的第二部分,
RewriteRule ^help /help.php
Run Code Online (Sandbox Code Playgroud)
我从Apache Mod_rewrite的权威指南中得到了答案
...不以http://或其他协议指示符开头的重写目标被假定为文件系统路径.不以斜杠开头的文件路径被解释为相对于正在进行重写的目录.
所以/help.php在系统的根目录中查找名为help.php的文件,该文件在我的系统上找不到.
要使/help.php显示为相对URL(相对于站点的根目录),您可以使用[PT]指令:
RewriteRule ^/help /help.php [PT]
Run Code Online (Sandbox Code Playgroud)
这会将http:// localhost/help 指向http://localhost/help.php.
| 归档时间: |
|
| 查看次数: |
7124 次 |
| 最近记录: |