2010-10-19 49 views
1

我的网站上有一个地址,像这样:Lighttpd配置。 (点)在我的查询字符串造成404

http://www.example.com/lookup?q=http%3A%2F%2Fgigaom.com%2F2010%2F10%2F10%2Fangry-birds-for-windows7-phone-dont-count-on-it%2F

在这个例子中,在查询字符串的“gigaom.com”部分的点被拧用lighttpd和我的重写规则。如果我把这个点取出来,我会得到一个404的点,没有404。我的重写规则如下。如果它有所作为,我使用symfony 1.4。

如果任何人都可以揭示出这个问题的一些光,将不胜感激!

url.rewrite-once = (
    "^/(.*\..+)$" => "$0", 
    "^/(.*)\.(.*)" => "/index.php", 
    "^/([^.]+)$"  => "/index.php/$1", 
    "^/$"    => "/index.php" 
) 

另外,具有lighttpd的和symfony的麻烦任何人(我知道你在那里,导致有大量未解决的线程在这个问题上)我最终的解决和回答以下它。

回答

5

确定这样的帮助下许多调试后:

debug.log-request-handling = "enable" 

^^这是当你试图调试重写规则的lighttpd中的救星! (它记录了我的一切,以/var/log/lighttpd/error.log)

我已经想通了。 (!包括点问题)对于所有那些有麻烦的symfony与lighttpd的工作的人这里的工作集的规则:

url.rewrite-once = (
    "^/(js|images|uploads|css|sf)/(.*)" => "$0", # we want to load these assets as is, without index.php 
    "^/[a-zA-Z_-]+\.(html|txt|ico)$" => "$0", # for any static .html files you might be calling in your web root, we don't want to put the index.php controller in front of them 
    "^/sf[A-z]+Plugin.*" => "$0", # don't want to mess with plugin routes 
    "^/([a-z_]+)\.php(.*)\.(.*)$" => "/$1.php$2.$3", # same concept as rules below, except for other applications/environments (backend.php, backend_dev.php, etc) 
    "^/([a-z_]+)\.php([^.]*)$" => "/$1.php$2", # see comment right above this one 
    "^/(.*)\.(.*)$" => "/index.php/$1.$2", # handle query strings and the dot problem! 
    "^/([^.]+)$"  => "/index.php/$1", # general requests 
    "^/$"    => "/index.php" # the home page 
) 

如果任何人有更多的麻烦,张贴在这里。谢谢!

+1

如果有查询两个点会发生什么,“www.gigaom。 COM“? – Joel 2010-10-19 14:47:14

+0

刚刚尝试过,它的工作原理。我还更新了规则一堆我已经在过去一小时发现(其他应用程序,如backend.php例如)和插件文件等情况。我唯一要解决的问题是大写字母,比如backend.php/News作为路线。 – Marc 2010-10-19 16:28:33

+0

任何想法如何我可以得到这种情况? http://2famous.tv/2013/07/11/adrian-layals-radio-show-episode-6-2/?fb_action_ids=10153032356450061&fb_action_types=og.likes&fb_source=timeline_og&action_object_map=%7B%2210153032356450061%22%3A528698340513393%7D&action_type_map= %7B%2210153032356450061%22%3A%22og.likes%22%7D&action_ref_map =%5B%5D – knutole 2013-07-12 04:56:29

0

我使用PHP,MySQL和.htaccess文件的重写规则。只分享别人也可以受益。

我以前的规则:

RewriteRule ^([^/\.]+)/([^/\.]+).html$ detail.php?name=$1&id=$2 [L] 

有人对这个结果的工作:http://www.sitecliff.com/Yahoo-UK/4.html

我想要的网站名称,而不是在URL中的标题。在网上冲浪之后,我发现这个点正如上面提到的那样引发了这个问题。

"^/(.*)\.(.*)$" => "/index.php/$1.$2", # handle query strings and the dot problem! 

所以我改变了规则:

RewriteRule ^([^/]+)$ detail.php?url=$1 [L] 

在此之后,我得到了我想要的结果:http://www.sitecliff.com/yahoo.com

+1

这是OT并且不正确:答案是Apache不适用于lighthttpd。如果点很重要,那么点应该被反斜杠'\ .'转义,而不是一味地移除。 – hynekcer 2012-11-13 23:54:28