Конфигурация Lighttpd.(точки) в моей строке запроса вызывают 404 - PullRequest
1 голос
/ 19 октября 2010

У меня на сайте есть такой адрес:

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 (я знаю, что вы там, потому что есть много неразрешенных вопросов по этому вопросу) Я решил решить и ответить на него ниже.

Ответы [ 2 ]

6 голосов
/ 19 октября 2010

ОК, так что после большой отладки с помощью:

debug.log-request-handling = "enable"

^^ Это спасатель, когда вы пытаетесь отладить правила перезаписи в lighttpd!(он записал все для меня в /var/log/lighttpd/error.log)

1005 * Я понял это.Для всех тех людей, у которых возникают проблемы с тем, чтобы 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
  )

Если у кого-то больше проблем, пишите здесь.Спасибо!

0 голосов
/ 22 августа 2011

Я использую 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

...