2012-01-03 101 views
1

这是我的.htaccess文件阿帕奇重写规则:不良标识定界符

# Redirect every request to index.php 
RewriteBase/
RewriteEngine on 
RewriteRule .* to public/index.php 

而且我收到的error.log中以下错误:

重写规则:不良标识定界符

有什么不对的.htaccess文件? (我刚开始玩弄mod_rewrite模块)。

编辑:.htaccess文件是在该网站的根目录。

回答

1

删除 “to”:

RewriteRule .* public/index.php 

Documentation

+4

谢谢你,我是一个白痴:( – siannone 2012-01-03 20:13:18

+0

还有一件事,当我使用'重写规则。*公共/ index.php'看起来像如果Web服务器被卡住了,我没有收到任何回应,但如果我使用'重写规则。* test.html'我”米corretly重定向到的test.html – siannone 2012-01-03 20:31:55

+0

没关系,正好解决了这个问题。 – siannone 2012-01-03 21:02:50

1

据我所知,您不需要在 “到” 重写规则。只要删除那个单词,它应该没问题。

RewriteRule .* public/index.php 

docs深入了解了这一点。

+0

我是一个完整的白痴/捂脸 – siannone 2012-01-03 20:13:00

-1

其他的人是对的,但不要忘记保持什么是在URL中?后,它的QSA标志,就像这样:

# Redirect every request to index.php 
RewriteBase/
RewriteEngine on 
RewriteRule .* public/index.php [QSA] 
+0

对不起奥利维尔但是这是不准确的。在[QSA]如果你想需要(“查询字符串附加”)标志*追加* q uery字符串参数到原始请求中的那个参数。如果只希望*保留原始请求的查询字符串,那么这是默认行为,并且不需要QSA。 [而且,如果你想完全剥离它,只需放一个“?”在重写规则的目标URL月底] HTH 克里斯 – cweekly 2014-01-28 18:45:52

+0

从我自己的测试(注意我的关于重写规则答案的历史),我可以讲的是:如果你添加一些查询,即在这里:' public/index.php?aa = bb',那么你将失去原始请求中的内容。所以你可能是对的,但是我在这里讨论的是一个不会忘记的好原则,因为如果你不那么做,你会在某一天或那一天遇到麻烦。当我说“不要忘记保留后面的内容”时,这就是我的意思。 (也许我没有正确表达自己,如果是这样,我很抱歉) – 2014-01-29 19:49:58

+0

所以,这里的所有答案都很好,但没有人提到我可以称之为好原则。如果你是对的,并且如果默认行为是保留原始请求的查询字符串 - 只要它没有被修改,则这不会增加开销。 – 2014-01-29 19:51:28